Skip to content

Commit 1ab719e

Browse files
authored
Merge branch 'main' into leolost/recognizing-instead-with-gesture
2 parents 8a07266 + eca9b14 commit 1ab719e

File tree

7 files changed

+84
-53
lines changed

7 files changed

+84
-53
lines changed

po/hu.po

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgstr ""
88
"Project-Id-Version: noise\n"
99
"Report-Msgid-Bugs-To: https://github.com/elementary/gala/issues\n"
1010
"POT-Creation-Date: 2024-12-18 21:23+0000\n"
11-
"PO-Revision-Date: 2024-12-08 11:16+0000\n"
11+
"PO-Revision-Date: 2025-01-16 17:55+0000\n"
1212
"Last-Translator: TomiOhl <[email protected]>\n"
1313
"Language-Team: Hungarian <https://l10n.elementary.io/projects/desktop/gala/"
1414
"hu/>\n"
@@ -17,7 +17,7 @@ msgstr ""
1717
"Content-Type: text/plain; charset=UTF-8\n"
1818
"Content-Transfer-Encoding: 8bit\n"
1919
"Plural-Forms: nplurals=2; plural=n != 1;\n"
20-
"X-Generator: Weblate 5.8.4\n"
20+
"X-Generator: Weblate 5.9.2\n"
2121
"X-Launchpad-Export-Date: 2017-02-21 05:47+0000\n"
2222

2323
#: daemon/DBus.vala:82 daemon-gtk3/BackgroundMenu.vala:11
@@ -128,17 +128,17 @@ msgstr "Frissített fordítások"
128128

129129
#: data/gala.metainfo.xml.in:35
130130
msgid "Fixed rare crash when a dock window was killed"
131-
msgstr ""
131+
msgstr "Ritka összeomlás javítva dokk ablak leállításakor"
132132

133133
#: data/gala.metainfo.xml.in:36
134134
msgid "Added interactive screenshot shortcut"
135-
msgstr ""
135+
msgstr "Gyorsparancs interaktív képernyőképhez"
136136

137137
#: data/gala.metainfo.xml.in:37
138-
#, fuzzy
139-
#| msgid "Fix potential crash when taking screenshots"
140138
msgid "Fixed crash when using tiling shortcuts"
141-
msgstr "Esetleges összeomlás javítva képernyőkép készítésekor"
139+
msgstr ""
140+
"Összeomlás javítva ablakok felosztásával kapcsolatos gyorsparancsok "
141+
"használatakor"
142142

143143
#: data/gala.metainfo.xml.in:56
144144
msgid "Improved shadows performance"

src/InternalUtils.vala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,5 +388,15 @@ namespace Gala {
388388
Clutter.get_default_backend ().get_default_seat ().bell_notify ();
389389
#endif
390390
}
391+
392+
public static void update_transients_visible (Meta.Window window, bool visible) {
393+
window.foreach_transient ((transient) => {
394+
unowned var actor = (Meta.WindowActor) transient.get_compositor_private ();
395+
396+
actor.visible = visible;
397+
398+
return true;
399+
});
400+
}
391401
}
392402
}

src/ShellClients/HideTracker.vala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public class Gala.HideTracker : Object {
152152
});
153153
}
154154

155-
private void update_overlap () {
155+
public void update_overlap () {
156156
overlap = false;
157157
focus_overlap = false;
158158
focus_maximized_overlap = false;

src/ShellClients/PanelClone.vala

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ public class Gala.PanelClone : Object {
5555
}
5656
});
5757

58+
wm.get_display ().in_fullscreen_changed.connect (check_hide);
59+
5860
Idle.add_once (() => {
5961
if (hide_mode == NEVER) {
6062
show ();
@@ -89,22 +91,38 @@ public class Gala.PanelClone : Object {
8991
return;
9092
}
9193

92-
new GesturePropertyTransition (actor, default_gesture_tracker, "translation-y", null, calculate_translation_y (true)).start ();
94+
InternalUtils.update_transients_visible (panel.window, false);
95+
96+
new GesturePropertyTransition (
97+
actor, default_gesture_tracker, "translation-y", null, calculate_translation_y (true)
98+
).start (() => InternalUtils.update_transients_visible (panel.window, !panel_hidden));
9399

94100
default_gesture_tracker.add_success_callback (() => panel_hidden = true);
95101
}
96102

97103
private void show () {
98-
if (!panel_hidden || default_gesture_tracker.has_started) {
104+
if (!panel_hidden || default_gesture_tracker.has_started || wm.get_display ().get_monitor_in_fullscreen (panel.window.get_monitor ())) {
99105
return;
100106
}
101107

102108
if (!Meta.Util.is_wayland_compositor ()) {
103109
Utils.x11_unset_window_pass_through (panel.window);
104110
}
105111

106-
new GesturePropertyTransition (actor, default_gesture_tracker, "translation-y", null, calculate_translation_y (false)).start ();
112+
new GesturePropertyTransition (
113+
actor, default_gesture_tracker, "translation-y", null, calculate_translation_y (false)
114+
).start (() => InternalUtils.update_transients_visible (panel.window, !panel_hidden));
107115

108116
default_gesture_tracker.add_success_callback (() => panel_hidden = false);
109117
}
118+
119+
private void check_hide () {
120+
if (wm.get_display ().get_monitor_in_fullscreen (panel.window.get_monitor ())) {
121+
hide ();
122+
} else if (hide_mode == NEVER) {
123+
show ();
124+
} else {
125+
hide_tracker.update_overlap ();
126+
}
127+
}
110128
}

src/ShellClients/ShellClientsManager.vala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ public class Gala.ShellClientsManager : Object {
191191
}
192192

193193
private bool is_itself_positioned (Meta.Window window) {
194-
return (window in positioned_windows) || (window in panel_windows);
194+
return (window in positioned_windows) || (window in panel_windows) || NotificationStack.is_notification (window);
195195
}
196196

197197
public bool is_positioned_window (Meta.Window window) {

src/Widgets/MultitaskingView.vala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace Gala {
2828
private GestureTracker multitasking_gesture_tracker;
2929
private GestureTracker workspace_gesture_tracker;
3030

31-
public WindowManager wm { get; construct; }
31+
public WindowManagerGala wm { get; construct; }
3232

3333
private Meta.Display display;
3434
private ModalProxy modal_proxy;
@@ -53,7 +53,7 @@ namespace Gala {
5353
}
5454
}
5555

56-
public MultitaskingView (WindowManager wm) {
56+
public MultitaskingView (WindowManagerGala wm) {
5757
Object (wm: wm);
5858
}
5959

@@ -631,6 +631,7 @@ namespace Gala {
631631
wm.background_group.hide ();
632632
wm.window_group.hide ();
633633
wm.top_window_group.hide ();
634+
wm.shell_group.hide ();
634635
show ();
635636
grab_key_focus ();
636637

@@ -693,6 +694,7 @@ namespace Gala {
693694
wm.background_group.show ();
694695
wm.window_group.show ();
695696
wm.top_window_group.show ();
697+
wm.shell_group.show ();
696698

697699
dock_clones.destroy_all_children ();
698700

@@ -721,7 +723,7 @@ namespace Gala {
721723
foreach (unowned Meta.WindowActor actor in window_actors) {
722724
const int MAX_OFFSET = 200;
723725

724-
if (actor.is_destroyed () || !actor.visible) {
726+
if (actor.is_destroyed () || !actor.visible || actor.translation_y != 0) {
725727
continue;
726728
}
727729

src/WindowManager.vala

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,13 @@ namespace Gala {
3737
*/
3838
public Clutter.Actor top_window_group { get; protected set; }
3939

40-
public Clutter.Actor notification_group { get; protected set; }
40+
/**
41+
* The group that contains all WindowActors that make shell elements, that is all windows reported as
42+
* ShellClientsManager.is_positioned_window.
43+
* It will (eventually) never be hidden by other components and is always on top of everything. Therefore elements are
44+
* responsible themselves for hiding depending on the state we are currently in (e.g. normal desktop, open multitasking view, fullscreen, etc.).
45+
*/
46+
public Clutter.Actor shell_group { get; private set; }
4147

4248
/**
4349
* {@inheritDoc}
@@ -104,8 +110,6 @@ namespace Gala {
104110
private bool animating_switch_workspace = false;
105111
private bool switch_workspace_with_gesture = false;
106112

107-
private signal void window_created (Meta.Window window);
108-
109113
/**
110114
* Amount of pixels to move on the nudge animation.
111115
*/
@@ -253,14 +257,6 @@ namespace Gala {
253257
stage.remove_child (top_window_group);
254258
ui_group.add_child (top_window_group);
255259

256-
#if HAS_MUTTER44
257-
var feedback_group = display.get_compositor ().get_feedback_group ();
258-
#else
259-
var feedback_group = display.get_feedback_group ();
260-
#endif
261-
stage.remove_child (feedback_group);
262-
ui_group.add_child (feedback_group);
263-
264260
// Initialize plugins and add default components if no plugin overrides them
265261
unowned var plugin_manager = PluginManager.get_default ();
266262
plugin_manager.initialize (this);
@@ -293,8 +289,16 @@ namespace Gala {
293289
}
294290

295291
// Add the remaining components that should be on top
296-
notification_group = new Clutter.Actor ();
297-
ui_group.add_child (notification_group);
292+
shell_group = new Clutter.Actor ();
293+
ui_group.add_child (shell_group);
294+
295+
#if HAS_MUTTER44
296+
var feedback_group = display.get_compositor ().get_feedback_group ();
297+
#else
298+
var feedback_group = display.get_feedback_group ();
299+
#endif
300+
stage.remove_child (feedback_group);
301+
ui_group.add_child (feedback_group);
298302

299303
pointer_locator = new PointerLocator (display);
300304
ui_group.add_child (pointer_locator);
@@ -381,12 +385,14 @@ namespace Gala {
381385

382386
update_input_area ();
383387

384-
display.window_created.connect ((window) => window_created (window));
385-
386388
var scroll_action = new SuperScrollAction (display);
387389
scroll_action.triggered.connect (handle_super_scroll);
388390
stage.add_action_full ("wm-super-scroll-action", CAPTURE, scroll_action);
389391

392+
display.window_created.connect ((window) =>
393+
InternalUtils.wait_for_window_actor_visible (window, check_shell_window)
394+
);
395+
390396
stage.show ();
391397

392398
plugin_manager.load_waiting_plugins ();
@@ -1162,6 +1168,17 @@ namespace Gala {
11621168
show_window_menu (window, menu, rect.x, rect.y);
11631169
}
11641170

1171+
private void check_shell_window (Meta.WindowActor actor) {
1172+
unowned var window = actor.get_meta_window ();
1173+
if (ShellClientsManager.get_instance ().is_positioned_window (window)) {
1174+
InternalUtils.clutter_actor_reparent (actor, shell_group);
1175+
}
1176+
1177+
if (NotificationStack.is_notification (window)) {
1178+
notification_stack.show_notification (actor);
1179+
}
1180+
}
1181+
11651182
/*
11661183
* effects
11671184
*/
@@ -1436,12 +1453,8 @@ namespace Gala {
14361453
actor.remove_all_transitions ();
14371454
actor.show ();
14381455

1439-
// Notifications are a special case and have to be always be handled
1440-
// (also regardless of the animation setting)
1456+
// Notifications initial animation is handled by the notification stack
14411457
if (NotificationStack.is_notification (window)) {
1442-
InternalUtils.clutter_actor_reparent (actor, notification_group);
1443-
notification_stack.show_notification (actor);
1444-
14451458
map_completed (actor);
14461459
return;
14471460
}
@@ -1843,7 +1856,6 @@ namespace Gala {
18431856
private List<Clutter.Actor>? windows;
18441857
private List<Clutter.Actor>? parents;
18451858
private List<Clutter.Actor>? tmp_actors;
1846-
private ulong switch_workspace_window_created_id = 0;
18471859
private Clutter.Actor? out_group;
18481860
private Clutter.Actor? in_group;
18491861
private Clutter.Actor? wallpaper;
@@ -1932,7 +1944,10 @@ namespace Gala {
19321944
continue;
19331945
}
19341946

1935-
if (!window.showing_on_its_workspace () || move_primary_only && !window.is_on_primary_monitor ()) {
1947+
if (!window.showing_on_its_workspace () ||
1948+
move_primary_only && !window.is_on_primary_monitor () ||
1949+
actor.get_parent () == shell_group
1950+
) {
19361951
continue;
19371952
}
19381953

@@ -2045,17 +2060,6 @@ namespace Gala {
20452060

20462061
prepare_workspace_switch (from, to, direction);
20472062

2048-
// while a workspace is being switched mutter doesn't map windows
2049-
// TODO: currently only notifications are handled here, other windows should be too
2050-
switch_workspace_window_created_id = window_created.connect ((window) => {
2051-
if (NotificationStack.is_notification (window)) {
2052-
InternalUtils.wait_for_window_actor_visible (window, (actor) => {
2053-
InternalUtils.clutter_actor_reparent (actor, notification_group);
2054-
notification_stack.show_notification (actor);
2055-
});
2056-
}
2057-
});
2058-
20592063
var animation_mode = Clutter.AnimationMode.EASE_OUT_CUBIC;
20602064

20612065
var x2 = -in_group.x;
@@ -2127,11 +2131,8 @@ namespace Gala {
21272131
return;
21282132
}
21292133

2130-
if (switch_workspace_window_created_id > 0) {
2131-
disconnect (switch_workspace_window_created_id);
2132-
switch_workspace_window_created_id = 0;
2133-
}
21342134
end_switch_workspace ();
2135+
21352136
if (!is_nudge_animation) {
21362137
switch_workspace_completed ();
21372138
}
@@ -2157,7 +2158,7 @@ namespace Gala {
21572158
}
21582159

21592160
private void end_switch_workspace () {
2160-
if (windows == null || parents == null)
2161+
if ((windows == null || parents == null) && tmp_actors == null)
21612162
return;
21622163

21632164
unowned var display = get_display ();

0 commit comments

Comments
 (0)