From 95067445bec3815fa90977c0e67292bad3298f6f Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Wed, 8 Jul 2026 18:42:18 -0400 Subject: [PATCH] improv: better handling of popover dialog after dropdown --- src/common.rs | 2 +- src/greeter.rs | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/common.rs b/src/common.rs index edfa99f..b284ee5 100644 --- a/src/common.rs +++ b/src/common.rs @@ -366,7 +366,7 @@ impl + Send + 'static> Common { ) } - fn blur_rects(&mut self, id: SurfaceId) -> Task { + pub fn blur_rects(&mut self, id: SurfaceId) -> Task { if let Some(output) = self.subsurface_outputs.get(&id) { if let Some(rect) = self.subsurface_rects.get(output) { let x = rect.x; diff --git a/src/greeter.rs b/src/greeter.rs index e86e366..e10dc3b 100644 --- a/src/greeter.rs +++ b/src/greeter.rs @@ -1527,6 +1527,9 @@ impl cosmic::Application for App { if let Some(handle) = self.heartbeat_handle.take() { handle.abort(); } + if self.dropdown_opt.is_some() { + return self.common.dropdown_blur_rects(true); + } } Message::DialogConfirm => match self.dialog_page_opt.take() { Some(DialogPage::Restart(_)) => { @@ -1553,7 +1556,11 @@ impl cosmic::Application for App { }) .discard(); } - None => {} + None => { + if self.dropdown_opt.is_some() { + return self.common.dropdown_blur_rects(true); + } + } }, Message::DropdownToggle(dropdown) => { if self.dropdown_opt == Some(dropdown) { @@ -1614,7 +1621,8 @@ impl cosmic::Application for App { .abortable(); self.heartbeat_handle = Some(handle); - return heartbeat; + self.common.include_menu = false; + return Task::batch(vec![self.common.dropdown_blur_rects(false), heartbeat]); } } Message::Heartbeat => match self.dialog_page_opt {