From c61642265bb7e87b9f39b5485d361049703176f2 Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Wed, 15 Apr 2026 09:55:36 +0200 Subject: [PATCH] Respect auto-hide setting for convergence dock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dock and space reserver hid unconditionally on maximize. Gate both on autoHidePanelsEnabled. Make the exclusive zone constant — dynamic changes on a contentless surface never get committed to the compositor. --- containments/homescreens/folio/qml/main.qml | 3 ++- containments/taskpanel/qml/main.qml | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/containments/homescreens/folio/qml/main.qml b/containments/homescreens/folio/qml/main.qml index 18d9064d..c5a897e7 100644 --- a/containments/homescreens/folio/qml/main.qml +++ b/containments/homescreens/folio/qml/main.qml @@ -181,7 +181,8 @@ ContainmentItem { property real dockOffset: 0 readonly property real dockHeight: Kirigami.Units.gridUnit * 3 readonly property bool dockHovered: dockHoverHandler.hovered - readonly property bool shouldHide: windowMaximizedTracker.showingWindow && !dockHovered + readonly property bool shouldHide: ShellSettings.Settings.autoHidePanelsEnabled + && windowMaximizedTracker.showingWindow && !dockHovered onShouldHideChanged: { if (shouldHide) { diff --git a/containments/taskpanel/qml/main.qml b/containments/taskpanel/qml/main.qml index dfe9bc94..9f3aa4cf 100644 --- a/containments/taskpanel/qml/main.qml +++ b/containments/taskpanel/qml/main.qml @@ -145,11 +145,16 @@ ContainmentItem { // desktop) with an exclusive zone equal to the dock height so that KWin // shrinks MaximizeArea accordingly. Input-transparent so clicks fall // through to the homescreen dock underneath. - // When a window is maximized the exclusive zone drops to 0 so the - // window reclaims the full screen while the dock auto-hides. + // When auto-hide is enabled and a window is maximized the surface is + // destroyed so the strut is removed and the window reclaims the full + // screen. Dynamic exclusive-zone changes alone are not enough because + // the contentless surface never repaints, so the Wayland commit that + // would apply the new zone never happens. Window { id: dockSpaceReserver visible: ShellSettings.Settings.convergenceModeEnabled + && !(ShellSettings.Settings.autoHidePanelsEnabled + && windowMaximizedTracker.showingWindow) color: "transparent" flags: Qt.FramelessWindowHint | Qt.WindowTransparentForInput // height is set by layer-shell anchoring; provide a fallback. @@ -159,7 +164,7 @@ ContainmentItem { LayerShell.Window.scope: "dock-space" LayerShell.Window.layer: LayerShell.Window.LayerBottom LayerShell.Window.anchors: LayerShell.Window.AnchorBottom | LayerShell.Window.AnchorLeft | LayerShell.Window.AnchorRight - LayerShell.Window.exclusionZone: windowMaximizedTracker.showingWindow ? 0 : Kirigami.Units.gridUnit * 3 + LayerShell.Window.exclusionZone: Kirigami.Units.gridUnit * 3 LayerShell.Window.keyboardInteractivity: LayerShell.Window.KeyboardInteractivityNone }