diff options
author | Stefano Karapetsas <[email protected]> | 2014-01-24 09:21:38 +0100 |
---|---|---|
committer | Stefano Karapetsas <[email protected]> | 2014-01-24 09:21:38 +0100 |
commit | 6f4ee23657a8fbaed9cc89e56e08b543203fefd3 (patch) | |
tree | 0866b9f11b0c1561ab03853d2d6efd2cbcbe0aeb /src/core/core.c | |
parent | 534f563ef5647a5d6359078b3c0c8eaba1aec877 (diff) | |
parent | a87157176ca6e01c8c4047999ee584f00b63c11e (diff) | |
download | marco-6f4ee23657a8fbaed9cc89e56e08b543203fefd3.tar.bz2 marco-6f4ee23657a8fbaed9cc89e56e08b543203fefd3.tar.xz |
Merge branch '1.7.0-window-snapping'
Diffstat (limited to 'src/core/core.c')
-rw-r--r-- | src/core/core.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/core/core.c b/src/core/core.c index 76e5548b..c8fa02b7 100644 --- a/src/core/core.c +++ b/src/core/core.c @@ -28,6 +28,7 @@ #include "frame-private.h" #include "workspace.h" #include "prefs.h" +#include "errors.h" /* Looks up the MetaWindow representing the frame of the given X window. * Used as a helper function by a bunch of the functions below. @@ -297,6 +298,35 @@ meta_core_user_lower_and_unfocus (Display *xdisplay, } void +meta_core_lower_beneath_focus_window (Display *xdisplay, + Window xwindow, + guint32 timestamp) +{ + XWindowChanges changes; + MetaDisplay *display; + MetaScreen *screen; + MetaWindow *focus_window; + + display = meta_display_for_x_display (xdisplay); + screen = meta_display_screen_for_xwindow (display, xwindow); + focus_window = meta_stack_get_top (screen->stack); + + if (focus_window == NULL) + return; + + changes.stack_mode = Below; + changes.sibling = focus_window->frame ? focus_window->frame->xwindow + : focus_window->xwindow; + + meta_error_trap_push (display); + XConfigureWindow (xdisplay, + xwindow, + CWSibling | CWStackMode, + &changes); + meta_error_trap_pop (display, FALSE); +} + +void meta_core_user_focus (Display *xdisplay, Window frame_xwindow, guint32 timestamp) |