Fix deletion of still-visible workspaces on unfocus

This commit is contained in:
Drew DeVault 2018-04-06 09:26:28 -04:00
parent 3499cc6c87
commit b08f7e5183
2 changed files with 4 additions and 1 deletions

View file

@ -6,6 +6,7 @@
#include <wlr/types/wlr_output_layout.h> #include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_xcursor_manager.h> #include <wlr/types/wlr_xcursor_manager.h>
#include "sway/tree/container.h" #include "sway/tree/container.h"
#include "sway/tree/workspace.h"
#include "sway/input/seat.h" #include "sway/input/seat.h"
#include "sway/input/cursor.h" #include "sway/input/cursor.h"
#include "sway/input/input-manager.h" #include "sway/input/input-manager.h"
@ -398,7 +399,8 @@ void seat_set_focus_warp(struct sway_seat *seat,
} }
if (last_ws) { if (last_ws) {
ipc_event_workspace(last_ws, container, "focus"); 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); container_destroy(last_ws);
} }
} }

View file

@ -216,6 +216,7 @@ static bool container_reap_empty(struct sway_container *con) {
break; break;
case C_WORKSPACE: case C_WORKSPACE:
if (!workspace_is_visible(con) && con->children->length == 0) { if (!workspace_is_visible(con) && con->children->length == 0) {
wlr_log(L_DEBUG, "Destroying workspace via reaper");
container_workspace_destroy(con); container_workspace_destroy(con);
return true; return true;
} }