summaryrefslogtreecommitdiffstats
path: root/widget/src/tooltip.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector@hecrj.dev>2023-11-21 19:13:39 +0100
committerLibravatar GitHub <noreply@github.com>2023-11-21 19:13:39 +0100
commit100d15f30654d446cffe2fb60a435c79c81b0188 (patch)
treee911f99e286cd7cf9e6360ca865375f3b3a67f9e /widget/src/tooltip.rs
parent879039a7e2bf2c58b86f4463fb984dc29ce8ff21 (diff)
parentf67387f2d80e744618a5f4f107509ba24802146c (diff)
downloadiced-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.rs10
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,