summaryrefslogtreecommitdiff
path: root/openbox/client.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-06-12 04:31:23 +0000
committerDana Jansens <danakj@orodu.net>2007-06-12 04:31:23 +0000
commit4b3b71c54eb21c23cdb64b8abc8e93a732282f75 (patch)
tree3190712b173d6f6d77d5c1f29eda60fe1189c630 /openbox/client.c
parentca4cfdbf38063da7d7165f5942174eb3e345ea32 (diff)
like unmap, don't let enter events move focus when a window iconifies unless underMouse is on
Diffstat (limited to 'openbox/client.c')
-rw-r--r--openbox/client.c11
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!