diff --git a/crates/viewer/re_ui/src/notifications.rs b/crates/viewer/re_ui/src/notifications.rs index 4065d3657bb6..4a3dd0cde3c4 100644 --- a/crates/viewer/re_ui/src/notifications.rs +++ b/crates/viewer/re_ui/src/notifications.rs @@ -159,8 +159,13 @@ impl NotificationUi { } fn ui(&mut self, egui_ctx: &egui::Context, button_response: &egui::Response) { - let is_panel_visible = - egui_ctx.memory(|mem| mem.is_popup_open(notification_panel_popup_id())); + let is_panel_visible = egui_ctx.memory_mut(|mem| { + let is_open = mem.is_popup_open(notification_panel_popup_id()); + if is_open { + mem.keep_popup_open(notification_panel_popup_id()); + } + is_open + }); if is_panel_visible { // Dismiss all toasts when opening panel self.unread_notification_level = None; diff --git a/crates/viewer/re_ui/src/ui_ext.rs b/crates/viewer/re_ui/src/ui_ext.rs index fdf28576e245..f038df2ae4a6 100644 --- a/crates/viewer/re_ui/src/ui_ext.rs +++ b/crates/viewer/re_ui/src/ui_ext.rs @@ -318,7 +318,13 @@ pub trait UiExt { ) -> Option { let ui = self.ui(); - if !ui.memory(|mem| mem.is_popup_open(popup_id)) { + if !ui.memory_mut(|mem| { + let is_open = mem.is_popup_open(popup_id); + if is_open { + mem.keep_popup_open(popup_id); + } + is_open + }) { return None; }