From 4d7bc811c445d95986550dfce63a6d1124f64761 Mon Sep 17 00:00:00 2001 From: LemmyCook Date: Mon, 8 Sep 2025 00:02:15 -0400 Subject: [PATCH] Widget Settings: load settings before triggering the loader to avoid async loading. --- .../Bar/BarWidgetSettingsDialog.qml | 62 +++++++++++-------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/Modules/SettingsPanel/Bar/BarWidgetSettingsDialog.qml b/Modules/SettingsPanel/Bar/BarWidgetSettingsDialog.qml index ef38ae6..9ba0045 100644 --- a/Modules/SettingsPanel/Bar/BarWidgetSettingsDialog.qml +++ b/Modules/SettingsPanel/Bar/BarWidgetSettingsDialog.qml @@ -32,6 +32,40 @@ Popup { border.width: Style.borderM * scaling } + // Load settings when popup opens with data + onOpened: { + if (widgetData && widgetId) { + loadWidgetSettings() + } + } + + function loadWidgetSettings() { + const widgetSettingsMap = { + "ActiveWindow": "WidgetSettings/ActiveWindowSettings.qml", + "Battery": "WidgetSettings/BatterySettings.qml", + "Brightness": "WidgetSettings/BrightnessSettings.qml", + "Clock": "WidgetSettings/ClockSettings.qml", + "CustomButton": "WidgetSettings/CustomButtonSettings.qml", + "MediaMini": "WidgetSettings/MediaMiniSettings.qml", + "Microphone": "WidgetSettings/MicrophoneSettings.qml", + "NotificationHistory": "WidgetSettings/NotificationHistorySettings.qml", + "Workspace": "WidgetSettings/WorkspaceSettings.qml", + "SidePanelToggle": "WidgetSettings/SidePanelToggleSettings.qml", + "Spacer": "WidgetSettings/SpacerSettings.qml", + "SystemMonitor": "WidgetSettings/SystemMonitorSettings.qml", + "Volume": "WidgetSettings/VolumeSettings.qml" + } + + const source = widgetSettingsMap[widgetId] + if (source) { + // Use setSource to pass properties at creation time + settingsLoader.setSource(source, { + "widgetData": widgetData, + "widgetMetadata": BarWidgetRegistry.widgetMetadata[widgetId] + }) + } + } + ColumnLayout { id: content width: parent.width @@ -63,36 +97,10 @@ Popup { } // Settings based on widget type + // Will be triggered via settingsLoader.setSource() Loader { id: settingsLoader Layout.fillWidth: true - - source: { - const widgetSettingsMap = { - "ActiveWindow": "WidgetSettings/ActiveWindowSettings.qml", - "Battery": "WidgetSettings/BatterySettings.qml", - "Brightness": "WidgetSettings/BrightnessSettings.qml", - "Clock": "WidgetSettings/ClockSettings.qml", - "CustomButton": "WidgetSettings/CustomButtonSettings.qml", - "MediaMini": "WidgetSettings/MediaMiniSettings.qml", - "Microphone": "WidgetSettings/MicrophoneSettings.qml", - "NotificationHistory": "WidgetSettings/NotificationHistorySettings.qml", - "Workspace": "WidgetSettings/WorkspaceSettings.qml", - "SidePanelToggle": "WidgetSettings/SidePanelToggleSettings.qml", - "Spacer": "WidgetSettings/SpacerSettings.qml", - "SystemMonitor": "WidgetSettings/SystemMonitorSettings.qml", - "Volume": "WidgetSettings/VolumeSettings.qml" - } - return widgetSettingsMap[settingsPopup.widgetId] || "" - } - - onLoaded: { - if (item) { - // Pass data to the loaded component - item.widgetData = settingsPopup.widgetData - item.widgetMetadata = BarWidgetRegistry.widgetMetadata[settingsPopup.widgetId] - } - } } // Action buttons