diff options
Diffstat (limited to 'sway/focus.c')
-rw-r--r-- | sway/focus.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sway/focus.c b/sway/focus.c index 6911ac00..c60f410c 100644 --- a/sway/focus.c +++ b/sway/focus.c @@ -96,6 +96,7 @@ bool set_focused_container(swayc_t *c) { return false; } swayc_t *active_ws = swayc_active_workspace(); + int active_ws_child_count = active_ws->children->length + active_ws->floating->length; swayc_log(L_DEBUG, c, "Setting focus to %p:%ld", c, c->handle); @@ -118,6 +119,11 @@ bool set_focused_container(swayc_t *c) { p = p->parent; p->is_focused = false; } + // active_ws might have been destroyed by now + // (focus swap away from empty ws = destroy ws) + if (active_ws_child_count == 0) { + active_ws = NULL; + } // get new focused view and set focus to it. p = get_focused_view(c); |