From 7ef0c60cb887056a7317fd65b57c0ec6a3c3329b Mon Sep 17 00:00:00 2001 From: Peter Fajdiga Date: Fri, 4 Apr 2025 13:59:39 +0200 Subject: [PATCH] un-maximize when swithing to another window in the same column (issue 93) --- src/lib/layout/Column.ts | 6 +++--- src/lib/layout/Grid.ts | 6 +++--- src/tests/flows/maximization.ts | 30 ++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/lib/layout/Column.ts b/src/lib/layout/Column.ts index b0320b7..b704a05 100644 --- a/src/lib/layout/Column.ts +++ b/src/lib/layout/Column.ts @@ -297,13 +297,13 @@ class Column { } public onWindowFocused(window: Window) { - this.grid.onColumnFocused(this); + this.grid.onColumnFocused(this, window); this.focusTaker = window; } - public restoreToTiled() { + public restoreToTiled(focusedWindow: Window) { const lastFocusedWindow = this.getFocusTaker(); - if (lastFocusedWindow !== null) { + if (lastFocusedWindow !== null && lastFocusedWindow !== focusedWindow) { lastFocusedWindow.restoreToTiled(); } } diff --git a/src/lib/layout/Grid.ts b/src/lib/layout/Grid.ts index 53f5e98..4cd0fbd 100644 --- a/src/lib/layout/Grid.ts +++ b/src/lib/layout/Grid.ts @@ -184,10 +184,10 @@ class Grid { } } - public onColumnFocused(column: Column) { + public onColumnFocused(column: Column, window: Window) { const lastFocusedColumn = this.getLastFocusedColumn(); - if (lastFocusedColumn !== null && lastFocusedColumn !== column) { - lastFocusedColumn.restoreToTiled(); + if (lastFocusedColumn !== null) { + lastFocusedColumn.restoreToTiled(window); } this.lastFocusedColumn = column; this.desktop.scrollToColumn(column, false); diff --git a/src/tests/flows/maximization.ts b/src/tests/flows/maximization.ts index d5ce6f8..6e549ad 100644 --- a/src/tests/flows/maximization.ts +++ b/src/tests/flows/maximization.ts @@ -143,6 +143,24 @@ () => qtMock.fireShortcut("karousel-focus-end"), ); assertWindowed(config, clients); + + runOneOf( + () => clients[2].fullScreen = true, + () => clients[2].setMaximize(true, true), + ); + assertFullScreenOrMaximized(clients); + + runOneOf( + () => workspaceMock.activeWindow = clients[1], + () => qtMock.fireShortcut("karousel-focus-up"), + ); + assertWindowed(config, clients); + + runOneOf( + () => workspaceMock.activeWindow = clients[2], + () => qtMock.fireShortcut("karousel-focus-down"), + ); + assertWindowed(config, clients); }); tests.register("Re-maximize enabled " + suffix, 100, () => { @@ -176,6 +194,18 @@ () => qtMock.fireShortcut("karousel-focus-end"), ); assertFullScreenOrMaximized(clients); + + runOneOf( + () => workspaceMock.activeWindow = clients[1], + () => qtMock.fireShortcut("karousel-focus-up"), + ); + assertWindowed(config, clients); + + runOneOf( + () => workspaceMock.activeWindow = clients[2], + () => qtMock.fireShortcut("karousel-focus-down"), + ); + assertFullScreenOrMaximized(clients); }); }