diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-24 09:44:39 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-24 09:44:39 +0200 |
| commit | db144ea05a98051662b4d77a2a0dfd950d670295 (patch) | |
| tree | a7a38704c421b9eb983d48f32345c7c923771b07 /AGENTS.md | |
| parent | 0fa4736470a39b6abbb0e70d3eb5b7636fb61549 (diff) | |
| download | quickshell-db144ea05a98051662b4d77a2a0dfd950d670295.tar.gz quickshell-db144ea05a98051662b4d77a2a0dfd950d670295.zip | |
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 <noreply@anthropic.com>
Diffstat (limited to 'AGENTS.md')
| -rw-r--r-- | AGENTS.md | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -143,14 +143,17 @@ changing that component. The ones that generalise: dominfo <vm>` 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 |
