diff options
author | 2020-11-12 00:40:00 +0100 | |
---|---|---|
committer | 2020-11-12 00:40:55 +0100 | |
commit | 31c509b2063907ad4907f248f82724c6fd641032 (patch) | |
tree | 2d58df961f39717db5ccbcbf1e168ac22bd0f365 /native/src/widget/pane_grid | |
parent | 3bcee62beb36d9e186d8716c7660433fac071ed6 (diff) | |
download | iced-31c509b2063907ad4907f248f82724c6fd641032.tar.gz iced-31c509b2063907ad4907f248f82724c6fd641032.tar.bz2 iced-31c509b2063907ad4907f248f82724c6fd641032.zip |
Implement event capturing for `PaneGrid`
Diffstat (limited to 'native/src/widget/pane_grid')
-rw-r--r-- | native/src/widget/pane_grid/content.rs | 13 | ||||
-rw-r--r-- | native/src/widget/pane_grid/title_bar.rs | 13 |
2 files changed, 16 insertions, 10 deletions
diff --git a/native/src/widget/pane_grid/content.rs b/native/src/widget/pane_grid/content.rs index dffc3a73..2dac7060 100644 --- a/native/src/widget/pane_grid/content.rs +++ b/native/src/widget/pane_grid/content.rs @@ -1,8 +1,9 @@ use crate::container; +use crate::event::{self, Event}; use crate::layout; use crate::overlay; use crate::pane_grid::{self, TitleBar}; -use crate::{Clipboard, Element, Event, Hasher, Layout, Point, Size}; +use crate::{Clipboard, Element, Hasher, Layout, Point, Size}; /// The content of a [`Pane`]. /// @@ -154,11 +155,13 @@ where messages: &mut Vec<Message>, renderer: &Renderer, clipboard: Option<&dyn Clipboard>, - ) { + ) -> event::Status { + let mut event_status = event::Status::Ignored; + let body_layout = if let Some(title_bar) = &mut self.title_bar { let mut children = layout.children(); - title_bar.on_event( + event_status = title_bar.on_event( event.clone(), children.next().unwrap(), cursor_position, @@ -172,7 +175,7 @@ where layout }; - let _ = self.body.on_event( + let body_status = self.body.on_event( event, body_layout, cursor_position, @@ -180,6 +183,8 @@ where renderer, clipboard, ); + + event_status.merge(body_status) } pub(crate) fn hash_layout(&self, state: &mut Hasher) { diff --git a/native/src/widget/pane_grid/title_bar.rs b/native/src/widget/pane_grid/title_bar.rs index eed7590d..f8ff43eb 100644 --- a/native/src/widget/pane_grid/title_bar.rs +++ b/native/src/widget/pane_grid/title_bar.rs @@ -1,8 +1,7 @@ +use crate::event::{self, Event}; use crate::layout; use crate::pane_grid; -use crate::{ - Clipboard, Element, Event, Hasher, Layout, Point, Rectangle, Size, -}; +use crate::{Clipboard, Element, Hasher, Layout, Point, Rectangle, Size}; /// The title bar of a [`Pane`]. /// @@ -245,7 +244,7 @@ where messages: &mut Vec<Message>, renderer: &Renderer, clipboard: Option<&dyn Clipboard>, - ) { + ) -> event::Status { if let Some(controls) = &mut self.controls { let mut children = layout.children(); let padded = children.next().unwrap(); @@ -254,14 +253,16 @@ where let _ = children.next(); let controls_layout = children.next().unwrap(); - let _ = controls.on_event( + controls.on_event( event, controls_layout, cursor_position, messages, renderer, clipboard, - ); + ) + } else { + event::Status::Ignored } } } |