aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/input/seat.c4
-rw-r--r--sway/tree/container.c1
2 files changed, 4 insertions, 1 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c
index e3df6955..ad3584a0 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -6,6 +6,7 @@
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_xcursor_manager.h>
#include "sway/tree/container.h"
+#include "sway/tree/workspace.h"
#include "sway/input/seat.h"
#include "sway/input/cursor.h"
#include "sway/input/input-manager.h"
@@ -398,7 +399,8 @@ void seat_set_focus_warp(struct sway_seat *seat,
}
if (last_ws) {
ipc_event_workspace(last_ws, container, "focus");
- if (last_ws->children->length == 0) {
+ if (!workspace_is_visible(last_ws)
+ && last_ws->children->length == 0) {
container_destroy(last_ws);
}
}
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 41321dc8..ab8363bc 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -216,6 +216,7 @@ static bool container_reap_empty(struct sway_container *con) {
break;
case C_WORKSPACE:
if (!workspace_is_visible(con) && con->children->length == 0) {
+ wlr_log(L_DEBUG, "Destroying workspace via reaper");
container_workspace_destroy(con);
return true;
}