diff options
author | 2021-06-17 14:50:28 -0500 | |
---|---|---|
committer | 2021-06-17 14:51:23 -0500 | |
commit | 27b42ca6b6585477fda0a5d07ec09bd74e501a1a (patch) | |
tree | 5e1889250e09e195a5d0e5f6491bf23309b77db6 /native | |
parent | e68da229b384fbe78514dab0b13c8eb4637f4f5d (diff) | |
download | iced-27b42ca6b6585477fda0a5d07ec09bd74e501a1a.tar.gz iced-27b42ca6b6585477fda0a5d07ec09bd74e501a1a.tar.bz2 iced-27b42ca6b6585477fda0a5d07ec09bd74e501a1a.zip |
Allow overlay from pane grid title bar
Diffstat (limited to 'native')
-rw-r--r-- | native/src/widget/pane_grid/content.rs | 16 | ||||
-rw-r--r-- | native/src/widget/pane_grid/title_bar.rs | 8 |
2 files changed, 16 insertions, 8 deletions
diff --git a/native/src/widget/pane_grid/content.rs b/native/src/widget/pane_grid/content.rs index f028ec25..188c47e3 100644 --- a/native/src/widget/pane_grid/content.rs +++ b/native/src/widget/pane_grid/content.rs @@ -193,18 +193,18 @@ where &mut self, layout: Layout<'_>, ) -> Option<overlay::Element<'_, Message, Renderer>> { - let body_layout = if self.title_bar.is_some() { + if let Some(title_bar) = self.title_bar.as_mut() { let mut children = layout.children(); + let title_bar_layout = children.next().unwrap(); - // Overlays only allowed in the pane body, for now at least. - let _title_bar_layout = children.next(); + if let Some(overlay) = title_bar.overlay(title_bar_layout) { + return Some(overlay); + } - children.next()? + self.body.overlay(children.next()?) } else { - layout - }; - - self.body.overlay(body_layout) + self.body.overlay(layout) + } } } diff --git a/native/src/widget/pane_grid/title_bar.rs b/native/src/widget/pane_grid/title_bar.rs index d9d85dbb..efdc1e54 100644 --- a/native/src/widget/pane_grid/title_bar.rs +++ b/native/src/widget/pane_grid/title_bar.rs @@ -1,6 +1,7 @@ use crate::container; use crate::event::{self, Event}; use crate::layout; +use crate::overlay; use crate::pane_grid; use crate::{ Clipboard, Element, Hasher, Layout, Padding, Point, Rectangle, Size, @@ -242,4 +243,11 @@ where control_status.merge(title_status) } + + pub(crate) fn overlay( + &mut self, + layout: Layout<'_>, + ) -> Option<overlay::Element<'_, Message, Renderer>> { + self.content.overlay(layout) + } } |