mirror of
https://github.com/zoriya/noctalia-shell.git
synced 2026-06-05 03:30:03 +00:00
Panels: more reliable draggable toggling
This commit is contained in:
@@ -21,7 +21,7 @@ NPanel {
|
||||
|
||||
panelKeyboardFocus: true
|
||||
|
||||
draggable: (PanelService.openedPopup === null)
|
||||
draggable: !PanelService.hasOpenedPopup
|
||||
|
||||
// Tabs enumeration, order is NOT relevant
|
||||
enum Tab {
|
||||
|
||||
@@ -19,7 +19,7 @@ NPanel {
|
||||
panelAnchorVerticalCenter: true
|
||||
panelKeyboardFocus: true
|
||||
|
||||
draggable: (PanelService.openedPopup === null)
|
||||
draggable: !PanelService.hasOpenedPopup
|
||||
|
||||
panelContent: Rectangle {
|
||||
id: wallpaperPanel
|
||||
|
||||
+19
-12
@@ -10,18 +10,19 @@ Singleton {
|
||||
// This is not a panel...
|
||||
property var lockScreen: null
|
||||
|
||||
// Currently opened panel
|
||||
property var openedPanel: null
|
||||
readonly property bool hasOpenedPanel: (openedPanel !== null)
|
||||
|
||||
// Currently opened popup
|
||||
property var openedPopup: null
|
||||
|
||||
// Panels
|
||||
property var registeredPanels: ({})
|
||||
|
||||
property var openedPanel: null
|
||||
property bool hasOpenedPanel: false
|
||||
signal willOpen
|
||||
signal willClose
|
||||
|
||||
// Currently opened popups, can have more than one.
|
||||
// ex: when opening an NIconPicker from a widget setting.
|
||||
property var openedPopups: []
|
||||
property bool hasOpenedPopup: false
|
||||
signal popupChanged
|
||||
|
||||
// Register this panel
|
||||
function registerPanel(panel) {
|
||||
registeredPanels[panel.objectName] = panel
|
||||
@@ -44,12 +45,15 @@ Singleton {
|
||||
openedPanel.close()
|
||||
}
|
||||
openedPanel = panel
|
||||
hasOpenedPanel = true
|
||||
|
||||
// emit signal
|
||||
willOpen()
|
||||
}
|
||||
|
||||
function willClosePanel(panel) {
|
||||
hasOpenedPanel = false
|
||||
|
||||
// emit signal
|
||||
willClose()
|
||||
}
|
||||
@@ -62,11 +66,14 @@ Singleton {
|
||||
|
||||
// Popups
|
||||
function willOpenPopup(popup) {
|
||||
openedPopup = popup
|
||||
openedPopups.push(popup)
|
||||
hasOpenedPopup = (openedPopups.length !== 0)
|
||||
popupChanged()
|
||||
}
|
||||
|
||||
function willClosePopup(popup) {
|
||||
if (openedPopup && openedPopup === popup) {
|
||||
openedPopup = null
|
||||
}
|
||||
openedPopups = openedPopups.filter(p => p !== popup)
|
||||
hasOpenedPopup = (openedPopups.length !== 0)
|
||||
popupChanged()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ Item {
|
||||
PanelService.openedPanel.isMasked = true
|
||||
}
|
||||
|
||||
if (PanelService.openedPopup !== null) {
|
||||
PanelService.openedPopup.isMasked = true
|
||||
for (var i = 0; i < PanelService.openedPopups.length; i++) {
|
||||
PanelService.openedPopups[i].isMasked = true
|
||||
}
|
||||
|
||||
isOpen = true
|
||||
@@ -70,8 +70,8 @@ Item {
|
||||
PanelService.openedPanel.isMasked = false
|
||||
}
|
||||
|
||||
if (PanelService.openedPopup !== null) {
|
||||
PanelService.openedPopup.isMasked = false
|
||||
for (var i = 0; i < PanelService.openedPopups.length; i++) {
|
||||
PanelService.openedPopups[i].isMasked = false
|
||||
}
|
||||
|
||||
afterClose()
|
||||
|
||||
Reference in New Issue
Block a user