summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2017-09-29 21:09:23 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2017-09-29 21:09:23 +0300
commitaf7a50198b28e29bbf568c1a8958fd9b0c9a3860 (patch)
tree1a16e80af5a3eab7e6afa8e9b7186ce42660342a
parentd8b60c551bc7410feec01480fe52148b093b4b2c (diff)
downloadmetacity-af7a50198b28e29bbf568c1a8958fd9b0c9a3860.tar.gz
window: minor fixes from mutter e3d59832 commit
-rw-r--r--src/core/window.c35
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);