From f590a2965a686436db263c25e45a06625d3bdb4c Mon Sep 17 00:00:00 2001 From: purian23 Date: Sun, 12 Jul 2026 23:57:29 -0400 Subject: [PATCH] fix(dash-tabs): update visibility logic for dash tab elements Fixes #2822 Port 1.5 --- quickshell/Common/SettingsData.qml | 3 ++- quickshell/Modules/DankDash/DankDashPopout.qml | 6 ++++-- quickshell/Modules/Settings/DankDashTab.qml | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/quickshell/Common/SettingsData.qml b/quickshell/Common/SettingsData.qml index a7d1e0cd0..1813d314b 100644 --- a/quickshell/Common/SettingsData.qml +++ b/quickshell/Common/SettingsData.qml @@ -617,7 +617,8 @@ Singleton { function setDashTabEnabled(id, on) { const current = getDashTabs(); - if (!on && id !== "settings" && current.filter(t => t.enabled && t.id !== "settings").length <= 1) + const visibleContentIds = visibleDashTabIds().filter(tabId => tabId !== "settings"); + if (!on && visibleContentIds.indexOf(id) >= 0 && visibleContentIds.length <= 1) return; dashTabs = current.map(t => t.id === id ? { "id": t.id, diff --git a/quickshell/Modules/DankDash/DankDashPopout.qml b/quickshell/Modules/DankDash/DankDashPopout.qml index 849be319f..4dfbd3e8a 100644 --- a/quickshell/Modules/DankDash/DankDashPopout.qml +++ b/quickshell/Modules/DankDash/DankDashPopout.qml @@ -323,7 +323,8 @@ DankPopout { id: tabBar width: parent.width - height: 48 + height: visible ? 48 : 0 + visible: model.length > 0 currentIndex: root.currentTabIndex spacing: Theme.spacingS equalWidthTabs: true @@ -355,7 +356,8 @@ DankPopout { Item { width: parent.width - height: Theme.spacingXS + height: visible ? Theme.spacingXS : 0 + visible: tabBar.visible } Item { diff --git a/quickshell/Modules/Settings/DankDashTab.qml b/quickshell/Modules/Settings/DankDashTab.qml index 43cec0a12..c3b3ced89 100644 --- a/quickshell/Modules/Settings/DankDashTab.qml +++ b/quickshell/Modules/Settings/DankDashTab.qml @@ -48,7 +48,7 @@ Item { // its delegates alive across commits (preserving focus for keyboard reorder) readonly property var tabIds: SettingsData._dashTabIds readonly property var tabState: SettingsData.getDashTabs() - readonly property int enabledContentCount: tabState.filter(t => t.enabled && t.id !== "settings").length + readonly property var visibleContentIds: SettingsData.visibleDashTabIds().filter(id => id !== "settings") function presentationFor(id) { return __presentation[id] ?? { @@ -149,7 +149,7 @@ Item { } function canHide(id) { - return !isEnabled(id) || id === "settings" || enabledContentCount > 1; + return !isEnabled(id) || id === "settings" || visibleContentIds.indexOf(id) < 0 || visibleContentIds.length > 1; } // Keyboard nav is handled at the tab root (not per-row activeFocusOnTab)