From c6fe4f8d8f4bd462ff9b1b1344422d0115cd5ff3 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Tue, 24 Apr 2007 06:41:04 +0000 Subject: [PATCH] focus_order_remove is called in a few places. move the check for unsetting focus_client into client_unmanage. --- openbox/client.c | 3 +++ openbox/focus.c | 6 ++---- 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) -- 2.39.2