Restore confirmed picker checks when an immediate change fails

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier HanssonandClaude Opus 5.5 committed 2026-10-10 23:12:31 +09:00
1 parent 2774a09e0b
commit 1371ea7b5d
2 files changed
+11

No files matched your search

+6
View File
@@ -59,6 +59,8 @@ Item {
property var dmenuOptions: []
property bool dmenuMultiple: false
property var dmenuSelected: []
// What the last confirmed change applied; a failed change returns the checks here.
property var dmenuSaved: []
property string dmenuChangeKey: ""
property var dmenuOnChange: []
property string selectionFile: ""
@@ -911,6 +913,7 @@ Item {
&& payload.onChange.every(function(arg) { return typeof arg === "string" }) ? payload.onChange : []
dmenuChangeKey = String(payload.changeKey || JSON.stringify(dmenuOnChange))
dmenuSelected = MenuModel.dmenuSelections(dmenuOptions, Array.isArray(payload.selected) ? payload.selected : [], dmenuOnChange.length > 0)
dmenuSaved = dmenuSelected
if (dmenuOnChange.length > 0)
dmenuSelected = MenuModel.dmenuSelections(dmenuOptions, selectionProc.requestedSelection(), true)
selectionFile = String(payload.selectionFile || "")
@@ -1039,6 +1042,9 @@ Item {
}
if (Array.isArray(applied))
root.dmenuSelected = MenuModel.dmenuSelections(root.dmenuOptions, applied, true)
root.dmenuSaved = root.dmenuSelected
} else {
root.dmenuSelected = root.dmenuSaved
}
root.updateDmenuChecks()
}
+5
View File
@@ -674,6 +674,11 @@ assert(
/onPositionChanged: function\(mouse\) \{\s*root\.selectFromPointer\(row\.index, row, mouse\)\s*\}/.test(menuQml),
'menu row hover routes through pointer movement gate'
)
assert(
/dmenuSaved = dmenuSelected\s*\n\s*if \(dmenuOnChange\.length > 0\)/.test(menuQml)
&& /root\.dmenuSaved = root\.dmenuSelected\s*\n\s*\} else \{\s*root\.dmenuSelected = root\.dmenuSaved/.test(menuQml),
'a failed immediate change restores the confirmed checks, even after reopening onto queued ones'
)
assert(
/onEntered: root\.selectFromPointer\(row\.index, row, \{\s*x: mouseArea\.mouseX,\s*y: mouseArea\.mouseY\s*\}\)/.test(menuQml),
'menu samples pointer movement immediately when entering a row'