From 9e44bed8b88299295f1341f17f3ae9a9ba6e0925 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Tue, 12 Jun 2007 04:54:16 +0000 Subject: [PATCH] stop ignoring enters on window hide, and explain why --- openbox/client.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/openbox/client.c b/openbox/client.c index d42f4f85..4bdedf04 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -2469,7 +2469,6 @@ gboolean client_show(ObClient *self) gboolean client_hide(ObClient *self) { gboolean hide = FALSE; - gulong ignore_start; if (!client_should_show(self)) { if (self == focus_client) { @@ -2483,15 +2482,22 @@ gboolean client_hide(ObClient *self) event_cancel_all_key_grabs(); } - if (!config_focus_under_mouse) - ignore_start = event_start_ignore_all_enters(); + /* We don't need to ignore enter events here. + The window can hide/iconify in 3 different ways: + 1 - through an x message. in this case we ignore all enter events + caused by responding to the x message (unless underMouse) + 2 - by a keyboard action. in this case we ignore all enter events + caused by the action + 3 - by a mouse action. in this case they are doing stuff with the + mouse and focus _should_ move. + + Also in action_end, we simulate an enter event that can't be ignored + so trying to ignore them is futile in case 3 anyways + */ frame_hide(self->frame); hide = TRUE; - if (!config_focus_under_mouse) - event_end_ignore_all_enters(ignore_start); - /* According to the ICCCM (sec 4.1.3.1) when a window is not visible, it needs to be in IconicState. This includes when it is on another desktop! -- 2.39.2