From 63940703f8b441126b31da8e3367ead2e988fbd9 Mon Sep 17 00:00:00 2001 From: ItsLemmy Date: Thu, 20 Nov 2025 21:37:02 -0500 Subject: [PATCH] TaskbarGrouped: Fixes, cleanup and improvements. --- Modules/Bar/Widgets/TaskbarGrouped.qml | 86 ++++++++++--------- .../WidgetSettings/TaskbarGroupedSettings.qml | 43 +++++----- Services/UI/BarWidgetRegistry.qml | 12 ++- 3 files changed, 73 insertions(+), 68 deletions(-) diff --git a/Modules/Bar/Widgets/TaskbarGrouped.qml b/Modules/Bar/Widgets/TaskbarGrouped.qml index a933cd800..dad1b05ff 100644 --- a/Modules/Bar/Widgets/TaskbarGrouped.qml +++ b/Modules/Bar/Widgets/TaskbarGrouped.qml @@ -34,11 +34,13 @@ Item { } return {}; } - readonly property string labelMode: (widgetSettings.labelMode !== undefined) ? widgetSettings.labelMode : widgetMetadata.labelMode - readonly property bool hideUnoccupied: (widgetSettings.hideUnoccupied !== undefined) ? widgetSettings.hideUnoccupied : widgetMetadata.hideUnoccupied + readonly property int characterCount: 2 - readonly property bool showLabelsOnlyWhenOccupied: (widgetSettings.showLabelsOnlyWhenOccupied !== undefined) ? widgetSettings.showLabelsOnlyWhenOccupied : true + readonly property bool hideUnoccupied: (widgetSettings.hideUnoccupied !== undefined) ? widgetSettings.hideUnoccupied : widgetMetadata.hideUnoccupied + readonly property string labelMode: (widgetSettings.labelMode !== undefined) ? widgetSettings.labelMode : widgetMetadata.labelMode + readonly property bool showLabelsOnlyWhenOccupied: (widgetSettings.showLabelsOnlyWhenOccupied !== undefined) ? widgetSettings.showLabelsOnlyWhenOccupied : widgetMetadata.showLabelsOnlyWhenOccupied readonly property bool colorizeIcons: (widgetSettings.colorizeIcons !== undefined) ? widgetSettings.colorizeIcons : widgetMetadata.colorizeIcons + property ListModel localWorkspaces: ListModel {} property real masterProgress: 0.0 property bool effectsActive: false @@ -270,9 +272,22 @@ Item { hoverEnabled: true enabled: !hasWindows cursorShape: enabled ? Qt.PointingHandCursor : Qt.ArrowCursor - onClicked: { - CompositorService.switchToWorkspace(workspaceModel); - } + acceptedButtons: Qt.LeftButton | Qt.RightButton + onPressed: mouse => { + if (mouse.button === Qt.LeftButton) { + CompositorService.switchToWorkspace(workspaceModel); + } else if (mouse.button === Qt.RightButton) { + TooltipService.hide(); + root.selectedWindow = ""; + root.selectedAppName = ""; + var popupMenuWindow = PanelService.getPopupMenuWindow(screen); + if (popupMenuWindow) { + const pos = BarService.getContextMenuPosition(container, contextMenu.implicitWidth, contextMenu.implicitHeight); + contextMenu.openAtItem(container, pos.x, pos.y); + popupMenuWindow.showContextMenu(contextMenu); + } + } + } } Flow { @@ -345,25 +360,25 @@ Item { cursorShape: Qt.PointingHandCursor acceptedButtons: Qt.LeftButton | Qt.RightButton - onPressed: function (mouse) { - if (!model) { - return; - } + onPressed: mouse => { + if (!model) { + return; + } - if (mouse.button === Qt.LeftButton) { - CompositorService.focusWindow(model); - } else if (mouse.button === Qt.RightButton) { - TooltipService.hide(); - root.selectedWindow = model; - root.selectedAppName = CompositorService.getCleanAppName(model.appId, model.title); - var popupMenuWindow = PanelService.getPopupMenuWindow(screen); - if (popupMenuWindow) { - const pos = BarService.getContextMenuPosition(taskbarItem, contextMenu.implicitWidth, contextMenu.implicitHeight); - contextMenu.openAtItem(taskbarItem, pos.x, pos.y); - popupMenuWindow.showContextMenu(contextMenu); - } - } - } + if (mouse.button === Qt.LeftButton) { + CompositorService.focusWindow(model); + } else if (mouse.button === Qt.RightButton) { + TooltipService.hide(); + root.selectedWindow = model; + root.selectedAppName = CompositorService.getCleanAppName(model.appId, model.title); + var popupMenuWindow = PanelService.getPopupMenuWindow(screen); + if (popupMenuWindow) { + const pos = BarService.getContextMenuPosition(taskbarItem, contextMenu.implicitWidth, contextMenu.implicitHeight); + contextMenu.openAtItem(taskbarItem, pos.x, pos.y); + popupMenuWindow.showContextMenu(contextMenu); + } + } + } onEntered: { taskbarItem.itemHovered = true; TooltipService.show(taskbarItem, model.title || model.appId || "Unknown app.", BarService.getTooltipDirection()); @@ -407,7 +422,11 @@ Item { if (hasWindows) return Color.mSecondary; - return Qt.alpha(Color.mOutline, 0.3); + if (Settings.data.colorSchemes.darkMode) { + return Qt.darker(Color.mSecondary, 1.5); + } else { + return Qt.lighter(Color.mSecondary, 1.5); + } } scale: workspaceModel.isActive ? 1.0 : 0.9 @@ -472,21 +491,10 @@ Item { return Color.mOnPrimary; if (workspaceModel.isUrgent) return Color.mOnError; - if (hasWindows) - return Color.mOnSecondary; + // if (hasWindows) + // return Color.mOnSecondary; - return Color.mOnSurface; - } - - opacity: { - if (workspaceModel.isFocused) - return 1.0; - if (workspaceModel.isUrgent) - return 0.9; - if (hasWindows) - return 0.8; - - return 0.6; + return Color.mOnSecondary; } Behavior on opacity { diff --git a/Modules/Panels/Settings/Bar/WidgetSettings/TaskbarGroupedSettings.qml b/Modules/Panels/Settings/Bar/WidgetSettings/TaskbarGroupedSettings.qml index 90e4b6907..aa6a6a542 100644 --- a/Modules/Panels/Settings/Bar/WidgetSettings/TaskbarGroupedSettings.qml +++ b/Modules/Panels/Settings/Bar/WidgetSettings/TaskbarGroupedSettings.qml @@ -12,22 +12,28 @@ ColumnLayout { property var widgetData: null property var widgetMetadata: null - property string valueLabelMode: widgetData.labelMode !== undefined ? widgetData.labelMode : (widgetMetadata ? widgetMetadata.labelMode : "index") - property bool valueHideUnoccupied: widgetData.hideUnoccupied !== undefined ? widgetData.hideUnoccupied : (widgetMetadata ? widgetMetadata.hideUnoccupied : false) - property bool valueShowWorkspaceNumbers: widgetData.showWorkspaceNumbers !== undefined ? widgetData.showWorkspaceNumbers : (widgetMetadata ? widgetMetadata.showWorkspaceNumbers : true) - property bool valueShowNumbersOnlyWhenOccupied: widgetData.showNumbersOnlyWhenOccupied !== undefined ? widgetData.showNumbersOnlyWhenOccupied : (widgetMetadata ? widgetMetadata.showNumbersOnlyWhenOccupied : true) - property bool valueColorizeIcons: widgetData.colorizeIcons !== undefined ? widgetData.colorizeIcons : (widgetMetadata ? widgetMetadata.colorizeIcons : false) + property bool valueHideUnoccupied: widgetData.hideUnoccupied !== undefined ? widgetData.hideUnoccupied : widgetMetadata.hideUnoccupied + property string valueLabelMode: widgetData.labelMode !== undefined ? widgetData.labelMode : widgetMetadata.labelMode + property bool valueShowLabelsOnlyWhenOccupied: widgetData.showLabelsOnlyWhenOccupied !== undefined ? widgetData.showLabelsOnlyWhenOccupied : widgetMetadata.showLabelsOnlyWhenOccupied + property bool valueColorizeIcons: widgetData.colorizeIcons !== undefined ? widgetData.colorizeIcons : widgetMetadata.colorizeIcons function saveSettings() { var settings = Object.assign({}, widgetData || {}); - settings.labelMode = valueLabelMode; + settings.hideUnoccupied = valueHideUnoccupied; - settings.showWorkspaceNumbers = valueShowWorkspaceNumbers; - settings.showNumbersOnlyWhenOccupied = valueShowNumbersOnlyWhenOccupied; + settings.labelMode = valueLabelMode; + settings.showLabelsOnlyWhenOccupied = valueShowLabelsOnlyWhenOccupied; settings.colorizeIcons = valueColorizeIcons; return settings; } + NToggle { + label: I18n.tr("bar.widget-settings.workspace.hide-unoccupied.label") + description: I18n.tr("bar.widget-settings.workspace.hide-unoccupied.description") + checked: valueHideUnoccupied + onToggled: checked => valueHideUnoccupied = checked + } + NComboBox { id: labelModeCombo label: I18n.tr("bar.widget-settings.workspace.label-mode.label") @@ -50,16 +56,18 @@ ColumnLayout { "name": I18n.tr("options.workspace-labels.index+name") } ] - currentKey: widgetData.labelMode || widgetMetadata.labelMode + currentKey: widgetData.labelMode onSelected: key => valueLabelMode = key minimumWidth: 200 } NToggle { - label: I18n.tr("bar.widget-settings.workspace.hide-unoccupied.label") - description: I18n.tr("bar.widget-settings.workspace.hide-unoccupied.description") - checked: valueHideUnoccupied - onToggled: checked => valueHideUnoccupied = checked + Layout.fillWidth: true + label: I18n.tr("bar.widget-settings.taskbar-grouped.show-labels-only-when-occupied.label") + description: I18n.tr("bar.widget-settings.taskbar-grouped.show-labels-only-when-occupied.description") + checked: root.valueShowLabelsOnlyWhenOccupied + onToggled: checked => root.valueShowLabelsOnlyWhenOccupied = checked + visible: !root.valueHideUnoccupied } NToggle { @@ -69,13 +77,4 @@ ColumnLayout { checked: root.valueColorizeIcons onToggled: checked => root.valueColorizeIcons = checked } - - NToggle { - Layout.fillWidth: true - label: I18n.tr("bar.widget-settings.taskbar-grouped.show-labels-only-when-occupied.label") - description: I18n.tr("bar.widget-settings.taskbar-grouped.show-labels-only-when-occupied.description") - checked: root.valueShowNumbersOnlyWhenOccupied - onToggled: checked => root.valueShowNumbersOnlyWhenOccupied = checked - visible: root.valueShowWorkspaceNumbers - } } diff --git a/Services/UI/BarWidgetRegistry.qml b/Services/UI/BarWidgetRegistry.qml index 50923e27e..7357fe2a7 100644 --- a/Services/UI/BarWidgetRegistry.qml +++ b/Services/UI/BarWidgetRegistry.qml @@ -58,12 +58,12 @@ Singleton { "SessionMenu": "WidgetSettings/SessionMenuSettings.qml", "Spacer": "WidgetSettings/SpacerSettings.qml", "SystemMonitor": "WidgetSettings/SystemMonitorSettings.qml", + "Taskbar": "WidgetSettings/TaskbarSettings.qml", "TaskbarGrouped": "WidgetSettings/TaskbarGroupedSettings.qml", + "Tray": "WidgetSettings/TraySettings.qml", "Volume": "WidgetSettings/VolumeSettings.qml", "WiFi": "WidgetSettings/WiFiSettings.qml", - "Workspace": "WidgetSettings/WorkspaceSettings.qml", - "Taskbar": "WidgetSettings/TaskbarSettings.qml", - "Tray": "WidgetSettings/TraySettings.qml" + "Workspace": "WidgetSettings/WorkspaceSettings.qml" }) property var widgetMetadata: ({ @@ -188,11 +188,9 @@ Singleton { }, "TaskbarGrouped": { "allowUserSettings": true, - "showWorkspaceNumbers": true, - "showNumbersOnlyWhenOccupied": true, - "labelMode": "index", "hideUnoccupied": false, - "characterCount": 2, + "labelMode": "index", + "showLabelsOnlyWhenOccupied": true, "colorizeIcons": false }, "Tray": {