diff --git a/Modules/IPC/IPCManager.qml b/Modules/IPC/IPCManager.qml index 61487b4f..285b876c 100644 --- a/Modules/IPC/IPCManager.qml +++ b/Modules/IPC/IPCManager.qml @@ -11,10 +11,13 @@ Item { // Using Wayland protocols to get focused window then determine which screen it's on. function getActiveScreen() { const activeWindow = ToplevelManager.activeToplevel - if (activeWindow.screens.length > 0) { - return activeWindow.screens[0] + if (activeWindow && activeWindow.screens.length > 0) { + var screen = activeWindow.screens[0] + return screen } - return null + + // Fall back to the primary screen + return Quickshell.screens[0] } IpcHandler { diff --git a/Services/PanelService.qml b/Services/PanelService.qml index 9a37aeb0..8922034b 100644 --- a/Services/PanelService.qml +++ b/Services/PanelService.qml @@ -12,6 +12,7 @@ Singleton { // Currently opened panel property var openedPanel: null + readonly property bool hasOpenedPanel: (openedPanel !== null) property var registeredPanels: ({}) @@ -33,9 +34,15 @@ Singleton { // Helper to keep only one panel open at any time function willOpenPanel(panel) { - if (openedPanel && openedPanel != panel) { + if (openedPanel && openedPanel !== panel) { openedPanel.close() } openedPanel = panel } + + function closedPanel(panel) { + if (openedPanel && openedPanel === panel) { + openedPanel = null + } + } } diff --git a/Widgets/NPanel.qml b/Widgets/NPanel.qml index 6670b22b..97e52eb7 100644 --- a/Widgets/NPanel.qml +++ b/Widgets/NPanel.qml @@ -126,6 +126,7 @@ Loader { root.closed() active = false useButtonPosition = false // Reset button position usage + PanelService.closedPanel(root) } // -----------------------------------------