Review everything shipped this weekend, and fix what the reviewers caught
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
@@ -32,9 +32,24 @@ PopupWindow {
|
||||
implicitWidth: Math.min(360, Math.max(menu.implicitWidth + Theme.popoverPadding * 2, 240))
|
||||
implicitHeight: menu.implicitHeight + Theme.popoverPadding * 2
|
||||
color: "transparent"
|
||||
visible: false
|
||||
grabFocus: true
|
||||
|
||||
// Whether the dock has asked for the menu. Visibility is that AND a live
|
||||
// anchor, rather than the request alone: the dock icon a menu is anchored
|
||||
// to is a delegate, and a delegate dies when its app's last window closes.
|
||||
// An anchored PopupWindow whose anchor has gone stays mapped with a null
|
||||
// anchor -- a menu hanging over the desktop, attached to nothing, holding
|
||||
// the dock revealed behind it.
|
||||
property bool requested: false
|
||||
visible: root.requested && root.anchorItem !== null
|
||||
|
||||
onAnchorItemChanged: if (root.anchorItem === null) root.requested = false
|
||||
|
||||
// Read by the Dock's interaction watchdog. A menu with the pointer on it is
|
||||
// a menu being read, not a stuck flag -- and the pointer being here means
|
||||
// it is not on the dock, which is the only other thing the dock can see.
|
||||
readonly property bool hovered: menuPointer.hovered
|
||||
|
||||
// Long window titles are the one thing here that can be arbitrarily wide,
|
||||
// and a menu as wide as a browser tab's title is not a menu.
|
||||
function shortTitle(toplevel: var): string {
|
||||
@@ -99,6 +114,10 @@ PopupWindow {
|
||||
border.width: 1
|
||||
border.color: Theme.alpha(Theme.fg, 0.08)
|
||||
|
||||
HoverHandler {
|
||||
id: menuPointer
|
||||
}
|
||||
|
||||
PrismEdge {
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 1
|
||||
@@ -125,7 +144,7 @@ PopupWindow {
|
||||
label: root.shortTitle(modelData)
|
||||
onActivated: {
|
||||
root.focusToplevel(modelData);
|
||||
root.visible = false;
|
||||
root.requested = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -151,7 +170,7 @@ PopupWindow {
|
||||
label: modelData.name
|
||||
onActivated: {
|
||||
modelData.execute();
|
||||
root.visible = false;
|
||||
root.requested = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -175,7 +194,7 @@ PopupWindow {
|
||||
onActivated: {
|
||||
if (root.entry)
|
||||
root.entry.execute();
|
||||
root.visible = false;
|
||||
root.requested = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,7 +210,7 @@ PopupWindow {
|
||||
root.unpin();
|
||||
else
|
||||
root.pin();
|
||||
root.visible = false;
|
||||
root.requested = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +220,7 @@ PopupWindow {
|
||||
rowEnabled: root.windows.length > 0
|
||||
onActivated: {
|
||||
root.quit();
|
||||
root.visible = false;
|
||||
root.requested = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,7 +237,7 @@ PopupWindow {
|
||||
label: "Dock settings"
|
||||
onActivated: {
|
||||
ShellState.openSettings("dock");
|
||||
root.visible = false;
|
||||
root.requested = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user