diff --git a/src/id.rs b/src/id.rs index 2724ee37..626bd055 100644 --- a/src/id.rs +++ b/src/id.rs @@ -300,6 +300,10 @@ impl ViewId { self.add_update_message(UpdateMessage::Active(*self)); } + pub fn clear_active(&self) { + self.add_update_message(UpdateMessage::ClearActive(*self)); + } + pub fn inspect(&self) { self.add_update_message(UpdateMessage::Inspect); } diff --git a/src/update.rs b/src/update.rs index 24b548ee..f9ce3c67 100644 --- a/src/update.rs +++ b/src/update.rs @@ -36,6 +36,7 @@ pub(crate) enum UpdateMessage { Focus(ViewId), ClearFocus(ViewId), Active(ViewId), + ClearActive(ViewId), WindowScale(f64), Disabled { id: ViewId, diff --git a/src/window_handle.rs b/src/window_handle.rs index f2a37e9d..1a894cc5 100644 --- a/src/window_handle.rs +++ b/src/window_handle.rs @@ -771,6 +771,11 @@ impl WindowHandle { id.request_style_recursive(); } } + UpdateMessage::ClearActive(id) => { + if Some(id) == cx.app_state.active { + cx.app_state.active = None; + } + } UpdateMessage::ScrollTo { id, rect } => { self.id .view()