diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-06-12 04:31:23 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-06-12 04:31:23 +0000 |
| commit | 4b3b71c54eb21c23cdb64b8abc8e93a732282f75 (patch) | |
| tree | 3190712b173d6f6d77d5c1f29eda60fe1189c630 /openbox | |
| parent | ca4cfdbf38063da7d7165f5942174eb3e345ea32 (diff) | |
like unmap, don't let enter events move focus when a window iconifies unless underMouse is on
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/client.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/openbox/client.c b/openbox/client.c index e5131894..d42f4f85 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -625,14 +625,14 @@ void client_unmanage(ObClient *self) XSelectInput(ob_display, self->window, NoEventMask); /* ignore enter events from the unmap so it doesnt mess with the focus */ - if (!client_focused(self) || !config_focus_under_mouse) + if (!config_focus_under_mouse) ignore_start = event_start_ignore_all_enters(); frame_hide(self->frame); /* flush to send the hide to the server quickly */ XFlush(ob_display); - if (!client_focused(self) || !config_focus_under_mouse) + if (!config_focus_under_mouse) event_end_ignore_all_enters(ignore_start); mouse_grab_for_client(self, FALSE); @@ -2469,6 +2469,7 @@ 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) { @@ -2482,9 +2483,15 @@ gboolean client_hide(ObClient *self) event_cancel_all_key_grabs(); } + if (!config_focus_under_mouse) + ignore_start = event_start_ignore_all_enters(); + 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! |
