fallback is still getting x errors. instead, fallback when the client iconifies,...
authorDana Jansens <danakj@orodu.net>
Mon, 12 Mar 2007 17:31:11 +0000 (17:31 +0000)
committerDana Jansens <danakj@orodu.net>
Mon, 12 Mar 2007 17:31:11 +0000 (17:31 +0000)
openbox/client.c
openbox/event.c

index be61a80..b561f4e 100644 (file)
@@ -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) {
index 1f0d155..ea8623a 100644 (file)
@@ -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;