From f67387f2d80e744618a5f4f107509ba24802146c Mon Sep 17 00:00:00 2001
From: Héctor Ramón Jiménez <hector@hecrj.dev>
Date: Tue, 21 Nov 2023 18:11:31 +0100
Subject: Invalidate layout when `Tooltip` changes `overlay`

---
 widget/src/tooltip.rs | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/widget/src/tooltip.rs b/widget/src/tooltip.rs
index b041d2e9..9745bc1c 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,
-- 
cgit