diff options
author | Olivier Fourdan <fourdan@xfce.org> | 2014-10-11 22:16:15 +0100 |
---|---|---|
committer | Olivier Fourdan <fourdan@xfce.org> | 2014-12-09 19:06:13 +0100 |
commit | 41d20680e6fc9da40560f906e15c1200de8189f2 (patch) | |
tree | f2f638ff110b9ea348e2ee8fce8db046bc2bac33 /src/netwm.c | |
parent | a07b656055fba9f699520e567f106b5f2b3f196f (diff) | |
download | xfwm4-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.c | 38 |
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; +} + |