From ae8a309c54105bb215e6da011d78528d3cd74c57 Mon Sep 17 00:00:00 2001 From: ItsLemmy Date: Mon, 20 Oct 2025 20:14:24 -0400 Subject: [PATCH] TaskbarGrouped: BugFix + simplifications - fixed workspace switching, when workspace is empty. - moved some logic to the compositor service - removed unecessary Qt.createQmlObject --- Modules/Bar/Widgets/TaskbarGrouped.qml | 32 ++++---------------------- Services/CompositorService.qml | 11 +++++++++ 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/Modules/Bar/Widgets/TaskbarGrouped.qml b/Modules/Bar/Widgets/TaskbarGrouped.qml index 620e92e4..ffa29311 100644 --- a/Modules/Bar/Widgets/TaskbarGrouped.qml +++ b/Modules/Bar/Widgets/TaskbarGrouped.qml @@ -35,17 +35,6 @@ Item { readonly property bool hideUnoccupied: (widgetSettings.hideUnoccupied !== undefined) ? widgetSettings.hideUnoccupied : false property ListModel localWorkspaces: ListModel {} - function getWindowsForWorkspace(workspaceId) { - var windowsInWs = [] - for (var i = 0; i < CompositorService.windows.count; i++) { - var window = CompositorService.windows.get(i) - if (window.workspaceId === workspaceId) { - windowsInWs.push(window) - } - } - return windowsInWs - } - function refreshWorkspaces() { localWorkspaces.clear() if (screen !== null) { @@ -56,21 +45,10 @@ Item { continue } - var windowsInWs = getWindowsForWorkspace(ws.id) - var windowsModel = Qt.createQmlObject('import QtQuick 2.0; ListModel {}', root) - for (var j = 0; j < windowsInWs.length; j++) { - windowsModel.append(windowsInWs[j]) - } - localWorkspaces.append({ - "id": ws.id, - "name": ws.name, - "output": ws.output, - "isFocused": ws.isFocused, - "isOccupied": ws.isOccupied, - "isActive": ws.isActive, - "isUrgent": ws.isUrgent, - "windows": windowsModel - }) + // Copy all properties from ws and add windows + var workspaceData = Object.assign({}, ws) + workspaceData.windows = CompositorService.getWindowsForWorkspace(ws.id) + localWorkspaces.append(workspaceData) } } } @@ -253,4 +231,4 @@ Item { delegate: workspaceRepeaterDelegate } } -} \ No newline at end of file +} diff --git a/Services/CompositorService.qml b/Services/CompositorService.qml index 307dc9b7..cc752fbd 100644 --- a/Services/CompositorService.qml +++ b/Services/CompositorService.qml @@ -256,6 +256,17 @@ Singleton { return "" } + function getWindowsForWorkspace(workspaceId) { + var windowsInWs = [] + for (var i = 0; i < windows.count; i++) { + var window = windows.get(i) + if (window.workspaceId === workspaceId) { + windowsInWs.push(window) + } + } + return windowsInWs + } + // Generic workspace switching function switchToWorkspace(workspace) { if (backend && backend.switchToWorkspace) {