2024-07-01 12:48:04 +00:00
|
|
|
From caca4ecbc4657998b4f9f3192afbd234f336402c Mon Sep 17 00:00:00 2001
|
|
|
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
|
|
Date: Sun, 26 May 2024 00:43:37 +0200
|
|
|
|
Subject: [PATCH 1/3] Revert "x11/window: Compare input shape to client rect
|
|
|
|
when undecorating"
|
|
|
|
|
|
|
|
This reverts commit d8af06fe4993227c5059971effbe28527cd75412.
|
|
|
|
---
|
|
|
|
src/x11/window-x11.c | 16 +++++++++-------
|
|
|
|
1 file changed, 9 insertions(+), 7 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
|
|
|
|
index df5f955877..925c7549b7 100644
|
|
|
|
--- a/src/x11/window-x11.c
|
|
|
|
+++ b/src/x11/window-x11.c
|
|
|
|
@@ -2400,7 +2400,6 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
|
|
|
g_autoptr (MtkRegion) region = NULL;
|
|
|
|
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
|
|
|
|
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
|
|
|
|
- MtkRectangle bounding_rect = { 0 };
|
|
|
|
Window xwindow;
|
|
|
|
|
|
|
|
if (window->decorated)
|
|
|
|
@@ -2412,14 +2411,10 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
xwindow = window->frame->xwindow;
|
|
|
|
- bounding_rect.width = window->buffer_rect.width;
|
|
|
|
- bounding_rect.height = window->buffer_rect.height;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
xwindow = priv->xwindow;
|
|
|
|
- bounding_rect.width = priv->client_rect.width;
|
|
|
|
- bounding_rect.height = priv->client_rect.height;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
|
|
|
|
@@ -2463,8 +2458,8 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
|
|
|
else if (n_rects == 1 &&
|
|
|
|
(rects[0].x == 0 &&
|
|
|
|
rects[0].y == 0 &&
|
|
|
|
- rects[0].width == bounding_rect.width &&
|
|
|
|
- rects[0].height == bounding_rect.height))
|
|
|
|
+ rects[0].width == window->buffer_rect.width &&
|
|
|
|
+ rects[0].height == window->buffer_rect.height))
|
|
|
|
{
|
|
|
|
/* This is the bounding region case. Keep the
|
|
|
|
* region as NULL. */
|
|
|
|
@@ -2481,6 +2476,13 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
|
|
|
|
|
|
|
if (region != NULL)
|
|
|
|
{
|
|
|
|
+ MtkRectangle bounding_rect;
|
|
|
|
+
|
|
|
|
+ bounding_rect.x = 0;
|
|
|
|
+ bounding_rect.y = 0;
|
|
|
|
+ bounding_rect.width = window->buffer_rect.width;
|
|
|
|
+ bounding_rect.height = window->buffer_rect.height;
|
|
|
|
+
|
|
|
|
/* The shape we get back from the client may have coordinates
|
|
|
|
* outside of the frame. The X SHAPE Extension requires that
|
|
|
|
* the overall shape the client provides never exceeds the
|
|
|
|
--
|
|
|
|
2.45.2
|
|
|
|
|
|
|
|
|
|
|
|
From 2b7161220cb95a1d531ef0cf8a8af911039cf194 Mon Sep 17 00:00:00 2001
|
2024-04-22 14:10:25 +00:00
|
|
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
|
|
Date: Sun, 21 Apr 2024 16:54:52 +0200
|
2024-07-01 12:48:04 +00:00
|
|
|
Subject: [PATCH 2/3] Revert "x11/window: Update comment and variable name to
|
2024-04-22 14:10:25 +00:00
|
|
|
reflect current behavior"
|
|
|
|
|
|
|
|
This reverts commit e4763d00e8512aeb408ae118597d753f12217487.
|
|
|
|
---
|
|
|
|
src/x11/window-x11.c | 15 ++++++++-------
|
|
|
|
1 file changed, 8 insertions(+), 7 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
|
2024-07-01 12:48:04 +00:00
|
|
|
index 925c7549b7..7f2c0a3fd2 100644
|
2024-04-22 14:10:25 +00:00
|
|
|
--- a/src/x11/window-x11.c
|
|
|
|
+++ b/src/x11/window-x11.c
|
|
|
|
@@ -2476,20 +2476,21 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
|
|
|
|
|
|
|
if (region != NULL)
|
|
|
|
{
|
|
|
|
- MtkRectangle bounding_rect;
|
|
|
|
+ MtkRectangle client_area;
|
|
|
|
|
|
|
|
- bounding_rect.x = 0;
|
|
|
|
- bounding_rect.y = 0;
|
|
|
|
- bounding_rect.width = window->buffer_rect.width;
|
|
|
|
- bounding_rect.height = window->buffer_rect.height;
|
|
|
|
+ client_area.x = 0;
|
|
|
|
+ client_area.y = 0;
|
|
|
|
+ client_area.width = window->buffer_rect.width;
|
|
|
|
+ client_area.height = window->buffer_rect.height;
|
|
|
|
|
|
|
|
/* The shape we get back from the client may have coordinates
|
|
|
|
* outside of the frame. The X SHAPE Extension requires that
|
|
|
|
* the overall shape the client provides never exceeds the
|
|
|
|
* "bounding rectangle" of the window -- the shape that the
|
|
|
|
- * window would have gotten if it was unshaped.
|
|
|
|
+ * window would have gotten if it was unshaped. In our case,
|
|
|
|
+ * this is simply the client area.
|
|
|
|
*/
|
|
|
|
- mtk_region_intersect_rectangle (region, &bounding_rect);
|
|
|
|
+ mtk_region_intersect_rectangle (region, &client_area);
|
|
|
|
}
|
|
|
|
|
|
|
|
meta_window_set_input_region (window, region);
|
|
|
|
--
|
2024-07-01 12:48:04 +00:00
|
|
|
2.45.2
|
2024-04-22 14:10:25 +00:00
|
|
|
|
|
|
|
|
2024-07-01 12:48:04 +00:00
|
|
|
From 256a879b7e230e8e9826be6e0df69feb31cbdd52 Mon Sep 17 00:00:00 2001
|
2023-10-06 22:20:27 +00:00
|
|
|
From: Adam Williamson <awilliam@redhat.com>
|
|
|
|
Date: Thu, 5 Oct 2023 13:09:46 -0700
|
2024-07-01 12:48:04 +00:00
|
|
|
Subject: [PATCH 3/3] Revert "x11: Use input region from frame window for
|
2024-04-22 14:10:25 +00:00
|
|
|
decorated windows"
|
2023-10-06 22:20:27 +00:00
|
|
|
|
|
|
|
This reverts commit d991961ae2a5c8cf2e58ff1072239f4902b0f767. It
|
|
|
|
seems to cause the broken mouse interaction bug reported in
|
|
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=2239128 .
|
|
|
|
|
|
|
|
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3068
|
|
|
|
---
|
|
|
|
src/core/frame.c | 7 -------
|
|
|
|
src/x11/window-x11.c | 29 ++++++++++-------------------
|
|
|
|
2 files changed, 10 insertions(+), 26 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/src/core/frame.c b/src/core/frame.c
|
2024-07-01 12:48:04 +00:00
|
|
|
index 7a09f89f14..df489e441c 100644
|
2023-10-06 22:20:27 +00:00
|
|
|
--- a/src/core/frame.c
|
|
|
|
+++ b/src/core/frame.c
|
2024-07-01 12:48:04 +00:00
|
|
|
@@ -36,7 +36,6 @@
|
2023-10-06 22:20:27 +00:00
|
|
|
|
|
|
|
#include <X11/Xatom.h>
|
2024-07-01 12:48:04 +00:00
|
|
|
#include <X11/Xlib.h>
|
2023-10-06 22:20:27 +00:00
|
|
|
-#include <X11/extensions/shape.h>
|
|
|
|
|
|
|
|
#define EVENT_MASK (SubstructureRedirectMask | \
|
|
|
|
StructureNotifyMask | SubstructureNotifyMask | \
|
2024-07-01 12:48:04 +00:00
|
|
|
@@ -118,9 +117,6 @@ meta_window_x11_set_frame_xwindow (MetaWindow *window,
|
2023-10-06 22:20:27 +00:00
|
|
|
XChangeWindowAttributes (x11_display->xdisplay,
|
|
|
|
frame->xwindow, CWEventMask, &attrs);
|
|
|
|
|
|
|
|
- if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
|
|
|
|
- XShapeSelectInput (x11_display->xdisplay, frame->xwindow, ShapeNotifyMask);
|
|
|
|
-
|
2024-07-01 12:48:04 +00:00
|
|
|
if (mtk_x11_error_trap_pop_with_return (x11_display->xdisplay))
|
|
|
|
{
|
|
|
|
meta_topic (META_DEBUG_WINDOW_STATE,
|
|
|
|
@@ -254,9 +250,6 @@ meta_window_destroy_frame (MetaWindow *window)
|
2023-10-06 22:20:27 +00:00
|
|
|
window->reparents_pending += 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
- if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
|
|
|
|
- XShapeSelectInput (x11_display->xdisplay, frame->xwindow, NoEventMask);
|
|
|
|
-
|
|
|
|
XDeleteProperty (x11_display->xdisplay,
|
2024-02-11 19:11:00 +00:00
|
|
|
meta_window_x11_get_xwindow (window),
|
2023-10-06 22:20:27 +00:00
|
|
|
x11_display->atom__MUTTER_NEEDS_FRAME);
|
|
|
|
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
|
2024-07-01 12:48:04 +00:00
|
|
|
index 7f2c0a3fd2..ace1f8f5bc 100644
|
2023-10-06 22:20:27 +00:00
|
|
|
--- a/src/x11/window-x11.c
|
|
|
|
+++ b/src/x11/window-x11.c
|
2024-02-11 19:11:00 +00:00
|
|
|
@@ -2082,10 +2082,6 @@ meta_window_x11_constructed (GObject *object)
|
|
|
|
priv->keys_grabbed = FALSE;
|
|
|
|
priv->grab_on_frame = FALSE;
|
2023-10-06 22:20:27 +00:00
|
|
|
|
|
|
|
- g_signal_connect (window, "notify::decorated",
|
|
|
|
- G_CALLBACK (meta_window_x11_update_input_region),
|
|
|
|
- window);
|
|
|
|
-
|
|
|
|
G_OBJECT_CLASS (meta_window_x11_parent_class)->constructed (object);
|
|
|
|
}
|
|
|
|
|
2024-02-11 19:11:00 +00:00
|
|
|
@@ -2400,21 +2396,16 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
2024-01-07 09:29:11 +00:00
|
|
|
g_autoptr (MtkRegion) region = NULL;
|
2023-10-06 22:20:27 +00:00
|
|
|
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
|
|
|
|
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
|
|
|
|
- Window xwindow;
|
|
|
|
|
|
|
|
+ /* Decorated windows don't have an input region, because
|
|
|
|
+ we don't shape the frame to match the client windows
|
|
|
|
+ (so the events are blocked by the frame anyway)
|
|
|
|
+ */
|
|
|
|
if (window->decorated)
|
|
|
|
{
|
|
|
|
- if (!window->frame)
|
|
|
|
- {
|
2024-02-11 19:11:00 +00:00
|
|
|
- if (priv->input_region)
|
2023-10-06 22:20:27 +00:00
|
|
|
- meta_window_set_input_region (window, NULL);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- xwindow = window->frame->xwindow;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
2024-02-11 19:11:00 +00:00
|
|
|
- xwindow = priv->xwindow;
|
|
|
|
+ if (priv->input_region)
|
2023-10-06 22:20:27 +00:00
|
|
|
+ meta_window_set_input_region (window, NULL);
|
|
|
|
+ return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
|
2024-02-11 19:11:00 +00:00
|
|
|
@@ -2426,7 +2417,7 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
2023-10-06 22:20:27 +00:00
|
|
|
|
2024-02-11 19:11:00 +00:00
|
|
|
mtk_x11_error_trap_push (x11_display->xdisplay);
|
2023-10-06 22:20:27 +00:00
|
|
|
rects = XShapeGetRectangles (x11_display->xdisplay,
|
|
|
|
- xwindow,
|
2024-02-11 19:11:00 +00:00
|
|
|
+ priv->xwindow,
|
2023-10-06 22:20:27 +00:00
|
|
|
ShapeInput,
|
|
|
|
&n_rects,
|
|
|
|
&ordering);
|
2024-02-11 19:11:00 +00:00
|
|
|
@@ -2480,8 +2471,8 @@ meta_window_x11_update_input_region (MetaWindow *window)
|
2023-10-06 22:20:27 +00:00
|
|
|
|
|
|
|
client_area.x = 0;
|
|
|
|
client_area.y = 0;
|
|
|
|
- client_area.width = window->buffer_rect.width;
|
|
|
|
- client_area.height = window->buffer_rect.height;
|
|
|
|
+ client_area.width = priv->client_rect.width;
|
|
|
|
+ client_area.height = priv->client_rect.height;
|
|
|
|
|
|
|
|
/* The shape we get back from the client may have coordinates
|
|
|
|
* outside of the frame. The X SHAPE Extension requires that
|
|
|
|
--
|
2024-07-01 12:48:04 +00:00
|
|
|
2.45.2
|
2023-10-06 22:20:27 +00:00
|
|
|
|