diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2019-08-12 22:03:50 -0400 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2019-08-12 22:03:50 -0400 |
| commit | aa09ee692203dd4ae757a76a576cad90b883195e (patch) | |
| tree | 22a5f25cc6d97c007802193df8b67aba8fc2586d | |
| parent | 7c8160fcfd8cd490d466c6ac73f0297ee6b11f39 (diff) | |
workspace: do not destroy if any seat is focusing
Since each seat has its own focus, do not destroy a workspace until it
is no longer focused by any seat. This prevents seats from being forced
to evacuate the workspace just because another seat switched focus away
from it
| -rw-r--r-- | sway/tree/workspace.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index d6819c61..03869d2e 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c @@ -155,9 +155,19 @@ void workspace_consider_destroy(struct sway_workspace *ws) { if (ws->tiling->length || ws->floating->length) { return; } + if (ws->output && output_get_active_workspace(ws->output) == ws) { return; } + + struct sway_seat *seat; + wl_list_for_each(seat, &server.input->seats, link) { + struct sway_node *node = seat_get_focus_inactive(seat, &root->node); + if (node == &ws->node) { + return; + } + } + workspace_begin_destroy(ws); } |
