diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-03-12 17:31:11 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-03-12 17:31:11 +0000 |
| commit | d47c6a0979e420c74b4bfe1c38e9980517b3a29d (patch) | |
| tree | 307c3ff3ff3bf49d128ec934d01d3879c1738bc2 | |
| parent | dc41c78a90e427e8b22789e413ebce69faf82975 (diff) | |
fallback is still getting x errors. instead, fallback when the client iconifies, and don't fallback when nothing has focus, send it to where we can control things though.
| -rw-r--r-- | openbox/client.c | 9 | ||||
| -rw-r--r-- | openbox/event.c | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/openbox/client.c b/openbox/client.c index be61a806..b561f4e2 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -2426,6 +2426,10 @@ static void client_iconify_recursive(ObClient *self, bottom'. */ focus_order_to_top(self); + /* Fall back focus since we're disappearing */ + if (focus_client == self) + client_unfocus(self); + changed = TRUE; } } else { @@ -2992,8 +2996,9 @@ gboolean client_focus(ObClient *self) return TRUE; } -/* Used when the current client is closed, focus_last will then prevent - * focus from going to the mouse pointer */ +/* Used when the current client is closed or otherwise hidden, focus_last will + then prevent focus from going to the mouse pointer +*/ void client_unfocus(ObClient *self) { if (focus_client == self) { diff --git a/openbox/event.c b/openbox/event.c index 1f0d1559..ea8623ab 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -664,7 +664,7 @@ static void event_handle_client(ObClient *client, XEvent *e) /* Look for the followup FocusIn */ if (!XCheckIfEvent(ob_display, &ce, look_for_focusin, NULL)) { /* There is no FocusIn, move focus where we can still hear events*/ - focus_fallback(OB_FOCUS_FALLBACK_NOFOCUS); + focus_set_client(NULL); } else if (ce.xany.window == e->xany.window) { /* If focus didn't actually move anywhere, there is nothing to do*/ break; |
