fix: keep content's overlays visible while showing toaster

This commit is contained in:
Hojjat 2026-09-02 15:42:42 -06:00 • committed by Michael Murphy
parent 9cc82abd9c
commit 6347ba2390

View file

@ -142,23 +142,26 @@ where
viewport: &Rectangle, viewport: &Rectangle,
translation: Vector, translation: Vector,
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> { ) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
//TODO: this hides the overlay of the content during the toast let (content_state, toasts_state) = state.children.split_at_mut(1);
if self.is_empty { let content = self.content.as_widget_mut().overlay(
self.content.as_widget_mut().overlay( &mut content_state[0],
&mut state.children[0],
layout, layout,
renderer, renderer,
viewport, viewport,
translation, translation,
) );
} else { if self.is_empty {
let bounds = layout.bounds(); return content;
Some(overlay::Element::new(Box::new(ToasterOverlay::new(
&mut state.children[1],
&mut self.toasts,
))))
} }
// keep the content's overlays (e.g. popovers, menus) visible while a toast is shown
let toaster = overlay::Element::new(Box::new(ToasterOverlay::new(
&mut toasts_state[0],
&mut self.toasts,
)));
Some(match content {
Some(content) => overlay::Group::with_children(vec![content, toaster]).overlay(),
None => toaster,
})
} }
fn drag_destinations( fn drag_destinations(