Skip to content

Commit 2e7af0b

Browse files
authored
Merge branch 'main' into leolost/propertygesturetarget
2 parents 529aa13 + 4850f1b commit 2e7af0b

File tree

7 files changed

+59
-59
lines changed

7 files changed

+59
-59
lines changed

lib/Utils.vala

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,5 +400,50 @@ namespace Gala {
400400

401401
return texture;
402402
}
403+
404+
private static HashTable<Meta.Window, X.XserverRegion?> regions = new HashTable<Meta.Window, X.XserverRegion?> (null, null);
405+
406+
public static void x11_set_window_pass_through (Meta.Window window) {
407+
unowned var x11_display = window.display.get_x11_display ();
408+
409+
#if HAS_MUTTER46
410+
var x_window = x11_display.lookup_xwindow (window);
411+
#else
412+
var x_window = window.get_xwindow ();
413+
#endif
414+
unowned var xdisplay = x11_display.get_xdisplay ();
415+
416+
regions[window] = X.Fixes.create_region_from_window (xdisplay, x_window, 0);
417+
418+
X.Xrectangle rect = {};
419+
420+
var region = X.Fixes.create_region (xdisplay, {rect});
421+
422+
X.Fixes.set_window_shape_region (xdisplay, x_window, 2, 0, 0, region);
423+
424+
X.Fixes.destroy_region (xdisplay, region);
425+
}
426+
427+
public static void x11_unset_window_pass_through (Meta.Window window) {
428+
unowned var x11_display = window.display.get_x11_display ();
429+
430+
#if HAS_MUTTER46
431+
var x_window = x11_display.lookup_xwindow (window);
432+
#else
433+
var x_window = window.get_xwindow ();
434+
#endif
435+
unowned var xdisplay = x11_display.get_xdisplay ();
436+
437+
var region = regions[window];
438+
439+
if (region == null) {
440+
return;
441+
}
442+
443+
X.Fixes.set_window_shape_region (xdisplay, x_window, 2, 0, 0, region);
444+
445+
regions.remove (window);
446+
X.Fixes.destroy_region (xdisplay, region);
447+
}
403448
}
404449
}

po/en_GB.po

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgstr ""
88
"Project-Id-Version: beat-box\n"
99
"Report-Msgid-Bugs-To: https://github.com/elementary/gala/issues\n"
1010
"POT-Creation-Date: 2024-11-23 16:06+0000\n"
11-
"PO-Revision-Date: 2024-09-29 02:16+0000\n"
11+
"PO-Revision-Date: 2024-12-05 01:16+0000\n"
1212
"Last-Translator: David Hewitt <[email protected]>\n"
1313
"Language-Team: English (United Kingdom) <https://l10n.elementary.io/projects/"
1414
"desktop/gala/en_GB/>\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.6.2\n"
20+
"X-Generator: Weblate 5.8.4\n"
2121
"X-Launchpad-Export-Date: 2017-03-14 07:02+0000\n"
2222

2323
#: daemon/DBus.vala:82 daemon-gtk3/BackgroundMenu.vala:11
@@ -123,10 +123,8 @@ msgid "Updated translations"
123123
msgstr "Updated translations"
124124

125125
#: data/gala.metainfo.xml.in:35
126-
#, fuzzy
127-
#| msgid "Improve window shadows for legacy apps"
128126
msgid "Improved shadows performance"
129-
msgstr "Improve window shadows for legacy apps"
127+
msgstr "Improved shadows performance"
130128

131129
#: data/gala.metainfo.xml.in:78
132130
msgid "Fix a potential crash when moving windows between workspaces"

src/ShellClients/DelegateActor.vala

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/ShellClients/PanelClone.vala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ public class Gala.PanelClone : Object {
4848
actor = (Meta.WindowActor) panel.window.get_compositor_private ();
4949
// WindowActor position and Window position aren't necessarily the same.
5050
// The clone needs the actor position
51-
panel.delegate_actor.notify["x"].connect (update_clone_position);
52-
panel.delegate_actor.notify["y"].connect (update_clone_position);
51+
actor.notify["x"].connect (update_clone_position);
52+
actor.notify["y"].connect (update_clone_position);
5353
// Actor visibility might be changed by something else e.g. workspace switch
5454
// but we want to keep it in sync with us
5555
actor.notify["visible"].connect (update_visible);
@@ -97,7 +97,7 @@ public class Gala.PanelClone : Object {
9797
switch (panel.anchor) {
9898
case TOP:
9999
case BOTTOM:
100-
return panel.delegate_actor.x;
100+
return actor.x;
101101
default:
102102
return 0;
103103
}
@@ -106,9 +106,9 @@ public class Gala.PanelClone : Object {
106106
private float calculate_clone_y (bool hidden) {
107107
switch (panel.anchor) {
108108
case TOP:
109-
return hidden ? panel.delegate_actor.y - actor.height : panel.delegate_actor.y;
109+
return hidden ? actor.y - actor.height : actor.y;
110110
case BOTTOM:
111-
return hidden ? panel.delegate_actor.y + actor.height : panel.delegate_actor.y;
111+
return hidden ? actor.y + actor.height : actor.y;
112112
default:
113113
return 0;
114114
}
@@ -128,7 +128,7 @@ public class Gala.PanelClone : Object {
128128
panel_hidden = true;
129129

130130
if (!Meta.Util.is_wayland_compositor ()) {
131-
panel.window.move_frame (false, DelegateActor.OUT_OF_BOUNDS, DelegateActor.OUT_OF_BOUNDS);
131+
Utils.x11_set_window_pass_through (panel.window);
132132
}
133133

134134
if (panel.anchor != TOP && panel.anchor != BOTTOM) {
@@ -151,7 +151,7 @@ public class Gala.PanelClone : Object {
151151
}
152152

153153
if (!Meta.Util.is_wayland_compositor ()) {
154-
panel.window.move_frame (false, panel.delegate_actor.actual_x, panel.delegate_actor.actual_y);
154+
Utils.x11_unset_window_pass_through (panel.window);
155155
}
156156

157157
clone.save_easing_state ();

src/ShellClients/PanelWindow.vala

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ public class Gala.PanelWindow : Object {
1515

1616
public Meta.Side anchor;
1717

18-
public DelegateActor delegate_actor;
1918
private PanelClone clone;
2019

2120
private uint idle_move_id = 0;
@@ -46,7 +45,6 @@ public class Gala.PanelWindow : Object {
4645

4746
window.stick ();
4847

49-
delegate_actor = new DelegateActor ((Meta.WindowActor) window.get_compositor_private ());
5048
clone = new PanelClone (wm, this);
5149

5250
var monitor_manager = wm.get_display ().get_context ().get_backend ().get_monitor_manager ();
@@ -64,8 +62,6 @@ public class Gala.PanelWindow : Object {
6462
public Meta.Rectangle get_custom_window_rect () {
6563
#endif
6664
var window_rect = window.get_frame_rect ();
67-
window_rect.x = delegate_actor.actual_x;
68-
window_rect.y = delegate_actor.actual_y;
6965

7066
if (width > 0) {
7167
window_rect.width = width;

src/meson.build

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ gala_bin_sources = files(
4242
'HotCorners/Barrier.vala',
4343
'HotCorners/HotCorner.vala',
4444
'HotCorners/HotCornerManager.vala',
45-
'ShellClients/DelegateActor.vala',
4645
'ShellClients/HideTracker.vala',
4746
'ShellClients/ManagedClient.vala',
4847
'ShellClients/NotificationsClient.vala',

vapi/xfixes-4.0.vapi

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@ namespace X {
66
namespace Fixes {
77
[CCode (cheader_filename = "X11/extensions/Xfixes.h", cname = "XFixesCreateRegion")]
88
public static X.XserverRegion create_region (X.Display display, [CCode (array_length = true)] X.Xrectangle[] rectangles);
9+
[CCode (cheader_filename = "X11/extensions/Xfixes.h", cname = "XFixesCreateRegionFromWindow")]
10+
public static X.XserverRegion create_region_from_window (X.Display display, X.Window window, int shape_kind);
911
[CCode (cheader_filename = "X11/extensions/Xfixes.h", cname = "XFixesDestroyRegion")]
1012
public static void destroy_region (X.Display display, X.XserverRegion region);
13+
[CCode (cheader_filename = "X11/extensions/Xfixes.h", cname = "XFixesSetWindowShapeRegion")]
14+
public static void set_window_shape_region (X.Display display, X.Window win, int shape_kind, int x_off, int y_off, XserverRegion region);
1115
}
1216
[SimpleType]
1317
[CCode (cheader_filename = "X11/extensions/Xfixes.h", cname = "XserverRegion", has_type_id = false)]

0 commit comments

Comments
 (0)