diff options
author | 2023-11-21 19:13:39 +0100 | |
---|---|---|
committer | 2023-11-21 19:13:39 +0100 | |
commit | 100d15f30654d446cffe2fb60a435c79c81b0188 (patch) | |
tree | e911f99e286cd7cf9e6360ca865375f3b3a67f9e /widget/src/tooltip.rs | |
parent | 879039a7e2bf2c58b86f4463fb984dc29ce8ff21 (diff) | |
parent | f67387f2d80e744618a5f4f107509ba24802146c (diff) | |
download | iced-100d15f30654d446cffe2fb60a435c79c81b0188.tar.gz iced-100d15f30654d446cffe2fb60a435c79c81b0188.tar.bz2 iced-100d15f30654d446cffe2fb60a435c79c81b0188.zip |
Merge pull request #2143 from iced-rs/fix/tooltip-layout-invalidation
Invalidate layout when `Tooltip` changes `overlay`
Diffstat (limited to 'widget/src/tooltip.rs')
-rw-r--r-- | widget/src/tooltip.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/widget/src/tooltip.rs b/widget/src/tooltip.rs index d5ee3de2..9e102c56 100644 --- a/widget/src/tooltip.rs +++ b/widget/src/tooltip.rs @@ -157,11 +157,19 @@ where ) -> event::Status { let state = tree.state.downcast_mut::<State>(); + let was_idle = *state == State::Idle; + *state = cursor .position_over(layout.bounds()) .map(|cursor_position| State::Hovered { cursor_position }) .unwrap_or_default(); + let is_idle = *state == State::Idle; + + if was_idle != is_idle { + shell.invalidate_layout(); + } + self.content.as_widget_mut().on_event( &mut tree.children[0], event, @@ -289,7 +297,7 @@ pub enum Position { Right, } -#[derive(Debug, Clone, Copy, Default)] +#[derive(Debug, Clone, Copy, PartialEq, Default)] enum State { #[default] Idle, |