aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-04-06 09:26:28 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2018-04-06 09:26:49 -0400
commitb08f7e5183d25ce0d4ae89796893a6d25d4a1b93 (patch)
tree70b9e3f290fcbdb203a0d2c8911b4da83d326085
parentMerge pull request #1754 from emersion/fix-output-enter (diff)
downloadsway-b08f7e5183d25ce0d4ae89796893a6d25d4a1b93.tar.gz
sway-b08f7e5183d25ce0d4ae89796893a6d25d4a1b93.tar.zst
sway-b08f7e5183d25ce0d4ae89796893a6d25d4a1b93.zip
Fix deletion of still-visible workspaces on unfocus
-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 @@
6#include <wlr/types/wlr_output_layout.h> 6#include <wlr/types/wlr_output_layout.h>
7#include <wlr/types/wlr_xcursor_manager.h> 7#include <wlr/types/wlr_xcursor_manager.h>
8#include "sway/tree/container.h" 8#include "sway/tree/container.h"
9#include "sway/tree/workspace.h"
9#include "sway/input/seat.h" 10#include "sway/input/seat.h"
10#include "sway/input/cursor.h" 11#include "sway/input/cursor.h"
11#include "sway/input/input-manager.h" 12#include "sway/input/input-manager.h"
@@ -398,7 +399,8 @@ void seat_set_focus_warp(struct sway_seat *seat,
398 } 399 }
399 if (last_ws) { 400 if (last_ws) {
400 ipc_event_workspace(last_ws, container, "focus"); 401 ipc_event_workspace(last_ws, container, "focus");
401 if (last_ws->children->length == 0) { 402 if (!workspace_is_visible(last_ws)
403 && last_ws->children->length == 0) {
402 container_destroy(last_ws); 404 container_destroy(last_ws);
403 } 405 }
404 } 406 }
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) {
216 break; 216 break;
217 case C_WORKSPACE: 217 case C_WORKSPACE:
218 if (!workspace_is_visible(con) && con->children->length == 0) { 218 if (!workspace_is_visible(con) && con->children->length == 0) {
219 wlr_log(L_DEBUG, "Destroying workspace via reaper");
219 container_workspace_destroy(con); 220 container_workspace_destroy(con);
220 return true; 221 return true;
221 } 222 }