summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-03-12 17:31:11 +0000
committerDana Jansens <danakj@orodu.net>2007-03-12 17:31:11 +0000
commitd47c6a0979e420c74b4bfe1c38e9980517b3a29d (patch)
tree307c3ff3ff3bf49d128ec934d01d3879c1738bc2
parentdc41c78a90e427e8b22789e413ebce69faf82975 (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.c9
-rw-r--r--openbox/event.c2
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;