aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/island/Island.qml
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/island/Island.qml')
-rw-r--r--desktop/island/Island.qml11
1 files changed, 7 insertions, 4 deletions
diff --git a/desktop/island/Island.qml b/desktop/island/Island.qml
index 12f49ea..ee03ca1 100644
--- a/desktop/island/Island.qml
+++ b/desktop/island/Island.qml
@@ -52,10 +52,9 @@ PanelWindow {
// A tray menu is a separate popup: moving onto it un-hovers the pills,
// and the hide timer would then hide the island under the open menu. The
- // menu cannot report its own close through display(), so the hold ends
- // the next time the pointer comes back to the island.
- // ponytail: if the menu is dismissed elsewhere, the island may stay shown
- // until the next hover.
+ // hold ends when the menu closes, or the next time the pointer comes back.
+ // It used to wait for the pointer alone, which left the island stuck open
+ // after a menu's Quit, since the pointer was on the menu, not the pills.
property bool menuHeld: false
onHoveredChanged: {
@@ -319,6 +318,10 @@ PanelWindow {
window: win
panel: win.panel
onMenuShown: win.menuHeld = true
+ onMenuClosed: {
+ win.menuHeld = false;
+ if (!win.hovered && win.panel === "") hideTimer.restart();
+ }
onOpenSound: win.panel = win.panel === "sound" ? "" : "sound"
onOpenHeadphones: win.panel = win.panel === "headphones" ? "" : "headphones"
onClosePanel: win.panel = ""