summaryrefslogtreecommitdiff
path: root/src/netwm.c
diff options
context:
space:
mode:
authorOlivier Fourdan <fourdan@xfce.org>2014-10-11 22:16:15 +0100
committerOlivier Fourdan <fourdan@xfce.org>2014-12-09 19:06:13 +0100
commit41d20680e6fc9da40560f906e15c1200de8189f2 (patch)
treef2f638ff110b9ea348e2ee8fce8db046bc2bac33 /src/netwm.c
parenta07b656055fba9f699520e567f106b5f2b3f196f (diff)
downloadxfwm4-41d20680e6fc9da40560f906e15c1200de8189f2.tar.gz
Add support for GTK frame extents
This is required for proper positionning and resizing of CSD windows from GTK3/GNOME. Signed-off-by: Olivier Fourdan <fourdan@xfce.org>
Diffstat (limited to 'src/netwm.c')
-rw-r--r--src/netwm.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/netwm.c b/src/netwm.c
index de4b0d690..66e641ff9 100644
--- a/src/netwm.c
+++ b/src/netwm.c
@@ -1590,3 +1590,41 @@ clientRemoveUserTimeWin (Client * c)
XSelectInput (display_info->dpy, c->user_time_win, NoEventMask);
}
}
+
+gboolean
+clientGetGtkFrameExtents (Client * c)
+{
+ ScreenInfo *screen_info;
+ DisplayInfo *display_info;
+ gulong *extents;
+ int nitems;
+ int i;
+
+ g_return_val_if_fail (c != NULL, FALSE);
+ TRACE ("entering clientGetGtkFrameExtents for \"%s\" (0x%lx)", c->name, c->window);
+
+ screen_info = c->screen_info;
+ display_info = screen_info->display_info;
+ c->has_frame_extents = FALSE;
+ extents = NULL;
+
+ if (getCardinalList (display_info, c->window, GTK_FRAME_EXTENTS, &extents, &nitems))
+ {
+ if (nitems == SIDE_COUNT)
+ {
+ c->has_frame_extents = TRUE;
+ for (i = 0; i < SIDE_COUNT; i++)
+ {
+ c->frame_extents[i] = (int) extents[i];
+ }
+ }
+ }
+
+ if (extents)
+ {
+ XFree (extents);
+ }
+
+ return c->has_frame_extents;
+}
+