From 9fa0b4da5d5356cb8bd4e79911a939fee0104790 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 8 Jul 2020 05:54:49 +0200 Subject: Complete `hash_layout` for `menu::List` --- native/src/overlay/menu.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'native') 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::().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::().hash(state); + + self.options.len().hash(state); + self.text_size.hash(state); + self.padding.hash(state); } fn on_event( -- cgit