From 01da5520d42c9af689124294efab7b008e7a4a38 Mon Sep 17 00:00:00 2001 From: Lemmy Date: Fri, 23 Jan 2026 16:47:57 -0500 Subject: [PATCH] widget-settings: properly close when clicking on a second screen --- Widgets/NSectionEditor.qml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Widgets/NSectionEditor.qml b/Widgets/NSectionEditor.qml index 41a885d99..556439133 100644 --- a/Widgets/NSectionEditor.qml +++ b/Widgets/NSectionEditor.qml @@ -39,6 +39,16 @@ NBox { property var widgetRegistry: null property string settingsDialogComponent: "BarWidgetSettingsDialog.qml" property var screen: null // Screen reference for per-screen widget settings + property var _activeDialog: null + + Component.onDestruction: { + if (_activeDialog && _activeDialog.close) { + var dialog = _activeDialog; + _activeDialog = null; + dialog.close(); + dialog.destroy(); + } + } readonly property int gridColumns: 3 readonly property real miniButtonSize: Style.baseWidgetSize * 0.65 @@ -442,6 +452,11 @@ NBox { // Handle core widget settings var component = Qt.createComponent(Qt.resolvedUrl(root.settingsDialogComponent)); function instantiateAndOpen() { + if (root._activeDialog) { + root._activeDialog.close(); + root._activeDialog.destroy(); + root._activeDialog = null; + } var dialog = component.createObject(Overlay.overlay, { "widgetIndex": index, "widgetData": modelData, @@ -450,7 +465,14 @@ NBox { "screen": root.screen }); if (dialog) { + root._activeDialog = dialog; dialog.updateWidgetSettings.connect(root.updateWidgetSettings); + dialog.closed.connect(() => { + if (root._activeDialog === dialog) { + root._activeDialog = null; + dialog.destroy(); + } + }); dialog.open(); } else { Logger.e("NSectionEditor", "Failed to create settings dialog instance");