From 3a3bf5da6f709f37b5cc994f3ca4d44ba5cc7cb3 Mon Sep 17 00:00:00 2001 From: Elijah Newren Date: Wed, 4 Apr 2007 23:54:56 +0000 Subject: send synthetic configurenotify events also in response to MapRequest 2007-04-04 Elijah Newren * src/window.c (meta_window_move_resize_internal): send synthetic configurenotify events also in response to MapRequest events when the window has a frame and the application specifies PPosition or UPosition hints. I believe they are already sent for all other cases. Should fix #322840. Fixes the testcase at least. :) svn path=/branches/gnome-2-18/; revision=3157 --- ChangeLog | 8 ++++++++ src/window.c | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/ChangeLog b/ChangeLog index 1156cd93..152cee05 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-04-04 Elijah Newren + + * src/window.c (meta_window_move_resize_internal): send synthetic + configurenotify events also in response to MapRequest events when + the window has a frame and the application specifies PPosition or + UPosition hints. I believe they are already sent for all other + cases. Should fix #322840. Fixes the testcase at least. :) + 2007-04-03 Elijah Newren * src/keybindings.c (handle_panel_keybinding): turn mouse_mode off diff --git a/src/window.c b/src/window.c index 626a875b..d70dca0c 100644 --- a/src/window.c +++ b/src/window.c @@ -3193,6 +3193,18 @@ meta_window_move_resize_internal (MetaWindow *window, if ((need_move_client || need_move_frame) && !(need_resize_client || need_resize_frame)) need_configure_notify = TRUE; + + /* MapRequest events with a PPosition or UPosition hint with a frame + * are moved by metacity without resizing; send a configure notify + * in such cases. See #322840. (Note that window->constructing is + * only true iff this call is due to a MapRequest, and when + * PPosition/UPosition hints aren't set, metacity seems to send a + * ConfigureNotify anyway due to the above code.) + */ + if (window->constructing && window->frame && + ((window->size_hints.flags & PPosition) || + (window->size_hints.flags & USPosition))) + need_configure_notify = TRUE; /* The rest of this function syncs our new size/pos with X as * efficiently as possible -- cgit v1.2.1