From c97972f7dd17b904da6e19bddd6bdc2d15271719 Mon Sep 17 00:00:00 2001 From: Lorenzo Colitti Date: Fri, 12 Apr 2024 12:39:03 +0900 Subject: [PATCH] output-layout: keep active workspace when destroying output Currently, when destroying the current output, core focuses the next output (if any) but does not switch to the same workspace that the user was previously using. Switch to the same workspace so the user can pick up where they left off. --- src/core/output-layout.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/core/output-layout.cpp b/src/core/output-layout.cpp index 7b675f67f..410f8f0b1 100644 --- a/src/core/output-layout.cpp +++ b/src/core/output-layout.cpp @@ -547,7 +547,13 @@ struct output_layout_output_t /* It doesn't make sense to transfer to another output if we're * going to shut down the compositor */ - transfer_views(wo, shutdown ? nullptr : get_core().seat->get_active_output()); + wf::output_t *new_output = shutdown ? nullptr : get_core().seat->get_active_output(); + transfer_views(wo, new_output); + if (new_output && + (wo->wset()->get_workspace_grid_size() == new_output->wset()->get_workspace_grid_size())) + { + new_output->wset()->set_workspace(wo->wset()->get_current_workspace()); + } wf::output_removed_signal data2; data2.output = wo;