diff options
author | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2017-09-29 21:09:23 +0300 |
---|---|---|
committer | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2017-09-29 21:09:23 +0300 |
commit | af7a50198b28e29bbf568c1a8958fd9b0c9a3860 (patch) | |
tree | 1a16e80af5a3eab7e6afa8e9b7186ce42660342a | |
parent | d8b60c551bc7410feec01480fe52148b093b4b2c (diff) | |
download | metacity-af7a50198b28e29bbf568c1a8958fd9b0c9a3860.tar.gz |
window: minor fixes from mutter e3d59832 commit
-rw-r--r-- | src/core/window.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/core/window.c b/src/core/window.c index ccee7ae3..7a54b7fe 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -5230,15 +5230,25 @@ meta_window_configure_request (MetaWindow *window, } else { - MetaWindow *sibling = NULL; + Window above; + MetaWindow *sibling; - if (event->xconfigurerequest.above != None) + above = event->xconfigurerequest.above; + sibling = NULL; + + if (above != None) { - sibling = meta_display_lookup_x_window (window->display, - event->xconfigurerequest.above); + sibling = meta_display_lookup_x_window (window->display, above); + + if (sibling == NULL) + return TRUE; + + meta_topic (META_DEBUG_STACK, + "xconfigure stacking request from window %s sibling %s stackmode %d\n", + window->desc, sibling->desc, event->xconfigurerequest.detail); } - restack_window(window, sibling, event->xconfigurerequest.detail); + restack_window (window, sibling, event->xconfigurerequest.detail); restacked = TRUE; } @@ -5283,7 +5293,7 @@ meta_window_property_notify (MetaWindow *window, static void restack_window (MetaWindow *window, MetaWindow *sibling, - int direction) + int direction) { switch (direction) { @@ -5309,13 +5319,16 @@ restack_window (MetaWindow *window, } static void -handle_net_restack_window (MetaDisplay* display, - XEvent *event) +handle_net_restack_window (MetaDisplay *display, + XEvent *event) { MetaWindow *window, *sibling = NULL; - window = meta_display_lookup_x_window (display, - event->xclient.window); + /* Ignore if this does not come from a pager, see the WM spec */ + if (event->xclient.data.l[0] != 2) + return; + + window = meta_display_lookup_x_window (display, event->xclient.window); if (window) { @@ -5364,7 +5377,7 @@ meta_window_client_message (MetaWindow *window, return TRUE; } - else if (event->xproperty.atom == + else if (event->xclient.message_type == display->atom__NET_RESTACK_WINDOW) { handle_net_restack_window (display, event); |