fix(xref): deliver row-menu clicks via press-publishing rows

Each menu row is now a single mouse_area that publishes on PRESS instead of a button nested in a mouse_area. iced_aw ContextMenu keeps its overlay element in the widget struct, so every view rebuild wipes the overlay subtree state - including a button's is_pressed between press and release - and release-time clicks published nothing. Headless simulator tests through the real overlay guard row clicks, flyout clicks, the Change Path Type hover trigger, and pin the subtree-reset mechanism. Requires iced_test as a dev-dependency; the Cargo.lock gpu-allocator/windows edge is pinned back to 0.62.2 (see docs/review-context-menu-click-delivery.md).
This commit is contained in:
Karim Jerbi committed 2026-09-15 23:56:32 +01:00
1 parent be32af38a2
commit 4b351911bf
3 files changed
+206 -43

No files matched your search

Generated
+27 -2
View File
@@ -31,6 +31,7 @@ dependencies = [
"iced_aw",
"iced_core",
"iced_runtime",
"iced_test",
"image",
"inventory",
"js-sys",
@@ -2677,6 +2678,30 @@ dependencies = [
"thiserror 2.0.18",
]
[[package]]
name = "iced_selector"
version = "0.15.0-dev"
source = "git+https://github.com/iced-rs/iced.git?rev=23604ff22ab0aad9e00b9327cb7b8546ed84db39#23604ff22ab0aad9e00b9327cb7b8546ed84db39"
dependencies = [
"iced_core",
]
[[package]]
name = "iced_test"
version = "0.15.0-dev"
source = "git+https://github.com/iced-rs/iced.git?rev=23604ff22ab0aad9e00b9327cb7b8546ed84db39#23604ff22ab0aad9e00b9327cb7b8546ed84db39"
dependencies = [
"iced_futures",
"iced_program",
"iced_renderer",
"iced_runtime",
"iced_selector",
"nom 8.0.0",
"png 0.18.1",
"sha2 0.10.9",
"thiserror 2.0.18",
]
[[package]]
name = "iced_tiny_skia"
version = "0.15.0-dev"
@@ -4252,7 +4277,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
dependencies = [
"libc",
"windows-sys 0.61.2",
"windows-sys 0.45.0",
]
[[package]]
@@ -5872,7 +5897,7 @@ version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0811b01ca2c4e8718760713911feaf4675c24f94e50530a015ec646cfb622f7c"
dependencies = [
"skrifa 0.42.1",
"skrifa 0.37.0",
"yazi",
"zeno",
]