From db144ea05a98051662b4d77a2a0dfd950d670295 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sat, 24 Oct 2026 09:44:39 +0200 Subject: island: release the tray-menu hold when the menu closes A tray menu un-hovers the pills, so the island holds itself shown while one is open. display() reports no close, so the hold ended only when the pointer came back to the island. Quitting an app from its menu left the pointer on the vanished menu, below the pills, and the island stayed open until the next hover. Menus now open through a QsMenuAnchor. Its closed signal fires on any dismissal, an entry picked, Escape or a click elsewhere, and clears the hold and restarts the hide timer. Checked by eye: menu placement unchanged, Quit and a dismissal both retract the island, hovering back keeps it shown. Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'AGENTS.md') diff --git a/AGENTS.md b/AGENTS.md index cefaf5b..ddcf76d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -143,14 +143,17 @@ changing that component. The ones that generalise: dominfo ` grepped for `Managed save: yes`, polled per VM the way the agent rows are. It measured 6ms. - **Tray menus need `//@ pragma UseQApplication`** at the top of the root QML - file. Without it `SystemTrayItem.display()` only logs a qCritical ("not + file. Without it `SystemTrayItem.display()` and `QsMenuAnchor.open()` only log a qCritical ("not started in QApplication mode") and nothing opens. Pragmas are read at launch, before the first import, so adding or changing one needs a restart, not a hot reload. `desktop/shell.qml` carries it. - **A tray menu is a separate popup, and hovering it un-hovers the island.** The pills lose the pointer, so the hide timer would close the island under - the open menu. `display()` reports no close, so the island holds itself shown - after it until the pointer returns (a ponytail ceiling in `Island.qml`). + the open menu, so the island holds itself shown while one is open. + `display()` reports no close, and holding until the pointer returned left + the island stuck open after a menu's Quit, with the pointer on the menu. + Menus open through a `QsMenuAnchor` instead, whose `closed` signal fires on + any dismissal and ends the hold. - **A mouse button nothing accepts does not reliably fall through to a catcher underneath.** The drawer's back button (`BTN_SIDE`, `Qt.BackButton`) never reached a full-surface `MouseArea` below the panel while a page was -- cgit v1.2.3