summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openbox/client.c3
-rw-r--r--openbox/focus.c6
2 files changed, 5 insertions, 4 deletions
diff --git a/openbox/client.c b/openbox/client.c
index 5eeda998..d5e7f4ce 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -535,6 +535,9 @@ void client_unmanage(ObClient *self)
/* update the focus lists */
focus_order_remove(self);
+ /* don't leave an invalid focus_client */
+ if (self == focus_client)
+ focus_client = NULL;
client_list = g_list_remove(client_list, self);
stacking_remove(self);
diff --git a/openbox/focus.c b/openbox/focus.c
index 788e1683..e62b3dbd 100644
--- a/openbox/focus.c
+++ b/openbox/focus.c
@@ -273,6 +273,8 @@ void focus_fallback(gboolean allow_refocus)
*/
focus_nothing();
+ focus_client = NULL;
+
if ((new = focus_fallback_target(allow_refocus, old)))
client_focus(new);
}
@@ -285,8 +287,6 @@ void focus_nothing()
screen_install_colormap(NULL, TRUE);
}
- focus_client = NULL;
-
/* when nothing will be focused, send focus to the backup target */
XSetInputFocus(ob_display, screen_support_win, RevertToPointerRoot,
event_curtime);
@@ -763,8 +763,6 @@ void focus_order_add_new(ObClient *c)
void focus_order_remove(ObClient *c)
{
focus_order = g_list_remove(focus_order, c);
- if (c == focus_client)
- focus_client = NULL;
}
void focus_order_to_top(ObClient *c)