diff options
author | 2020-07-08 05:54:49 +0200 | |
---|---|---|
committer | 2020-07-08 11:29:20 +0200 | |
commit | 9fa0b4da5d5356cb8bd4e79911a939fee0104790 (patch) | |
tree | 67547cddb549eff1a4c46ae2da74b07263c5c450 /native | |
parent | 625979b6652a8a14a0eaf6bd62f1e9a8da0ae421 (diff) | |
download | iced-9fa0b4da5d5356cb8bd4e79911a939fee0104790.tar.gz iced-9fa0b4da5d5356cb8bd4e79911a939fee0104790.tar.bz2 iced-9fa0b4da5d5356cb8bd4e79911a939fee0104790.zip |
Complete `hash_layout` for `menu::List`
Diffstat (limited to 'native')
-rw-r--r-- | native/src/overlay/menu.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index 2a19e286..32cbacce 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -113,6 +113,9 @@ where fn hash_layout(&self, state: &mut Hasher, position: Point) { use std::hash::Hash; + struct Marker; + std::any::TypeId::of::<Marker>().hash(state); + (position.x as u32).hash(state); (position.y as u32).hash(state); } @@ -138,10 +141,11 @@ where clipboard, ); + let option_was_selected = current_messages < messages.len(); + match event { Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) - if !bounds.contains(cursor_position) - || current_messages < messages.len() => + if !bounds.contains(cursor_position) || option_was_selected => { *self.is_open = false; } @@ -245,7 +249,12 @@ where fn hash_layout(&self, state: &mut Hasher) { use std::hash::Hash as _; - 0.hash(state); + struct Marker; + std::any::TypeId::of::<Marker>().hash(state); + + self.options.len().hash(state); + self.text_size.hash(state); + self.padding.hash(state); } fn on_event( |