mirror of
https://github.com/brl/mutter.git
synced 2024-11-22 08:00:42 -05:00
Ignore xconfigurerequest events for stacking when it should be safe to do
2005-02-06 Elijah Newren <newren@gmail.com> Ignore xconfigurerequest events for stacking when it should be safe to do so. Again, thanks to Crispin Flowerday for the test case. Thanks to KWin for the inspiration (and to Google for indexing their source code). Fixes the other half of #166395. * src/window.c: (meta_window_configure_request): if the active_window is from a separate application than the one getting the configure request and the net_wm_user_time of the active window is later than that of the window getting the configure request, then ignore the request.
This commit is contained in:
parent
d11681e505
commit
459c6668fb
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2005-02-06 Elijah Newren <newren@gmail.com>
|
||||||
|
|
||||||
|
Ignore xconfigurerequest events for stacking when it should be
|
||||||
|
safe to do so. Again, thanks to Crispin Flowerday for the test
|
||||||
|
case. Thanks to KWin for the inspiration (and to Google for
|
||||||
|
indexing their source code). Fixes the other half of #166395.
|
||||||
|
|
||||||
|
* src/window.c: (meta_window_configure_request): if the
|
||||||
|
active_window is from a separate application than the one getting
|
||||||
|
the configure request and the net_wm_user_time of the active
|
||||||
|
window is later than that of the window getting the configure
|
||||||
|
request, then ignore the request.
|
||||||
|
|
||||||
2005-02-06 Elijah Newren <newren@gmail.com>
|
2005-02-06 Elijah Newren <newren@gmail.com>
|
||||||
|
|
||||||
If activation requests are too old, set the demands_attention hint
|
If activation requests are too old, set the demands_attention hint
|
||||||
|
48
src/window.c
48
src/window.c
@ -3820,18 +3820,44 @@ meta_window_configure_request (MetaWindow *window,
|
|||||||
*/
|
*/
|
||||||
if (event->xconfigurerequest.value_mask & CWStackMode)
|
if (event->xconfigurerequest.value_mask & CWStackMode)
|
||||||
{
|
{
|
||||||
switch (event->xconfigurerequest.detail)
|
MetaWindow *active_window;
|
||||||
|
active_window = window->display->expected_focus_window;
|
||||||
|
if (meta_prefs_get_disable_workarounds ())
|
||||||
{
|
{
|
||||||
case Above:
|
meta_topic (META_DEBUG_STACK,
|
||||||
meta_window_raise (window);
|
"%s sent an xconfigure stacking request; this is "
|
||||||
break;
|
"broken behavior and the request is being ignored.\n",
|
||||||
case Below:
|
window->desc);
|
||||||
meta_window_lower (window);
|
}
|
||||||
break;
|
else if (active_window &&
|
||||||
case TopIf:
|
!meta_window_same_application (window, active_window) &&
|
||||||
case BottomIf:
|
XSERVER_TIME_IS_BEFORE (window->net_wm_user_time,
|
||||||
case Opposite:
|
active_window->net_wm_user_time))
|
||||||
break;
|
{
|
||||||
|
meta_topic (META_DEBUG_STACK,
|
||||||
|
"Ignoring xconfigure stacking request from %s (with "
|
||||||
|
"user_time %lu); currently active application is %s (with "
|
||||||
|
"user_time %lu).\n",
|
||||||
|
window->desc,
|
||||||
|
window->net_wm_user_time,
|
||||||
|
active_window->desc,
|
||||||
|
active_window->net_wm_user_time);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (event->xconfigurerequest.detail)
|
||||||
|
{
|
||||||
|
case Above:
|
||||||
|
meta_window_raise (window);
|
||||||
|
break;
|
||||||
|
case Below:
|
||||||
|
meta_window_lower (window);
|
||||||
|
break;
|
||||||
|
case TopIf:
|
||||||
|
case BottomIf:
|
||||||
|
case Opposite:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user