From 1674b0476c4a857322877f765bc8489c0d61d01b Mon Sep 17 00:00:00 2001 From: Tim Boudreau Date: Thu, 30 May 2024 14:22:34 -0400 Subject: [PATCH] Ability for a view to resign from active state (#481) Fixes #470 - "No way to resign `active`" --- src/id.rs | 4 ++++ src/update.rs | 1 + src/window_handle.rs | 5 +++++ 3 files changed, 10 insertions(+) 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()