summarylogtreecommitdiffstats
path: root/client-Handle-removal-of-GTK_FRAME_EXTENTS.patch
diff options
context:
space:
mode:
Diffstat (limited to 'client-Handle-removal-of-GTK_FRAME_EXTENTS.patch')
-rw-r--r--client-Handle-removal-of-GTK_FRAME_EXTENTS.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/client-Handle-removal-of-GTK_FRAME_EXTENTS.patch b/client-Handle-removal-of-GTK_FRAME_EXTENTS.patch
new file mode 100644
index 000000000000..c0d5b69817ac
--- /dev/null
+++ b/client-Handle-removal-of-GTK_FRAME_EXTENTS.patch
@@ -0,0 +1,53 @@
+From 488288f6e35d5d3dc077e87fe2ed83129692f62e Mon Sep 17 00:00:00 2001
+From: Olivier Fourdan <fourdan@xfce.org>
+Date: Sun, 14 Nov 2021 11:00:55 +0100
+Subject: [PATCH] client: Handle removal of GTK_FRAME_EXTENTS
+
+Chromium and GOOGLE Chrome have now support for GTK_FRAME_EXTENTS.
+
+When maximizing a window, Chromium/Chrome simply removes the property
+on its toplevel rather than setting all values to 0.
+
+xfwm4 would simply ignore the property change because it could not read
+the values and therefore apply the old, wrong values.
+
+Fix xfwm4 to handle the property removal like an actual property change
+to 0.
+
+Signed-off-by: Olivier Fourdan <fourdan@xfce.org>
+Closes: https://gitlab.xfce.org/xfce/xfwm4/-/issues/603
+---
+ src/client.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/client.c b/src/client.c
+index 4e6affcfd..310cf90aa 100644
+--- a/src/client.c
++++ b/src/client.c
+@@ -4200,6 +4200,7 @@ clientGetGtkFrameExtents (Client * c)
+ DisplayInfo *display_info;
+ gboolean value_changed = FALSE;
+ gulong *extents;
++ unsigned long old_value;
+ int nitems;
+ int i;
+
+@@ -4209,6 +4210,8 @@ clientGetGtkFrameExtents (Client * c)
+ screen_info = c->screen_info;
+ display_info = screen_info->display_info;
+ extents = NULL;
++
++ old_value = FLAG_TEST (c->flags, CLIENT_FLAG_HAS_FRAME_EXTENTS);
+ FLAG_UNSET (c->flags, CLIENT_FLAG_HAS_FRAME_EXTENTS);
+
+ if (getCardinalList (display_info, c->window, GTK_FRAME_EXTENTS, &extents, &nitems))
+@@ -4232,6 +4235,9 @@ clientGetGtkFrameExtents (Client * c)
+ XFree (extents);
+ }
+
++ /* Adding or removing the property also counts as a change */
++ value_changed |= (old_value ^ FLAG_TEST (c->flags, CLIENT_FLAG_HAS_FRAME_EXTENTS));
++
+ return value_changed;
+ }
+