summaryrefslogtreecommitdiffstats
path: root/widget/src/pane_grid
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--widget/src/pane_grid.rs49
-rw-r--r--widget/src/pane_grid/content.rs20
-rw-r--r--widget/src/pane_grid/title_bar.rs30
3 files changed, 42 insertions, 57 deletions
diff --git a/widget/src/pane_grid.rs b/widget/src/pane_grid.rs
index b4ed4b64..29b7ac87 100644
--- a/widget/src/pane_grid.rs
+++ b/widget/src/pane_grid.rs
@@ -79,7 +79,6 @@ pub use state::State;
pub use title_bar::TitleBar;
use crate::container;
-use crate::core::event::{self, Event};
use crate::core::layout;
use crate::core::mouse;
use crate::core::overlay::{self, Group};
@@ -88,7 +87,7 @@ use crate::core::touch;
use crate::core::widget;
use crate::core::widget::tree::{self, Tree};
use crate::core::{
- self, Background, Border, Clipboard, Color, Element, Layout, Length,
+ self, Background, Border, Clipboard, Color, Element, Event, Layout, Length,
Pixels, Point, Rectangle, Shell, Size, Theme, Vector, Widget,
};
@@ -433,9 +432,7 @@ where
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
- ) -> event::Status {
- let mut event_status = event::Status::Ignored;
-
+ ) {
let Memory { action, .. } = tree.state.downcast_mut();
let node = self.internal.layout();
@@ -451,7 +448,7 @@ where
let bounds = layout.bounds();
if let Some(cursor_position) = cursor.position_over(bounds) {
- event_status = event::Status::Captured;
+ shell.capture_event();
match &self.on_resize {
Some((leeway, _)) => {
@@ -556,9 +553,9 @@ where
}
}
- event_status = event::Status::Captured;
+ shell.capture_event();
} else if action.picked_split().is_some() {
- event_status = event::Status::Captured;
+ shell.capture_event();
}
*action = state::Action::Idle;
@@ -600,7 +597,7 @@ where
ratio,
}));
- event_status = event::Status::Captured;
+ shell.capture_event();
}
}
}
@@ -611,7 +608,8 @@ where
let picked_pane = action.picked_pane().map(|(pane, _)| pane);
- self.panes
+ for (((pane, content), tree), layout) in self
+ .panes
.iter()
.copied()
.zip(&mut self.contents)
@@ -622,22 +620,21 @@ where
.maximized()
.map_or(true, |maximized| *pane == maximized)
})
- .map(|(((pane, content), tree), layout)| {
- let is_picked = picked_pane == Some(pane);
-
- content.on_event(
- tree,
- event.clone(),
- layout,
- cursor,
- renderer,
- clipboard,
- shell,
- viewport,
- is_picked,
- )
- })
- .fold(event_status, event::Status::merge)
+ {
+ let is_picked = picked_pane == Some(pane);
+
+ content.on_event(
+ tree,
+ event.clone(),
+ layout,
+ cursor,
+ renderer,
+ clipboard,
+ shell,
+ viewport,
+ is_picked,
+ );
+ }
}
fn mouse_interaction(
diff --git a/widget/src/pane_grid/content.rs b/widget/src/pane_grid/content.rs
index ec0676b1..81a5cc1e 100644
--- a/widget/src/pane_grid/content.rs
+++ b/widget/src/pane_grid/content.rs
@@ -1,12 +1,12 @@
use crate::container;
-use crate::core::event::{self, Event};
use crate::core::layout;
use crate::core::mouse;
use crate::core::overlay;
use crate::core::renderer;
use crate::core::widget::{self, Tree};
use crate::core::{
- self, Clipboard, Element, Layout, Point, Rectangle, Shell, Size, Vector,
+ self, Clipboard, Element, Event, Layout, Point, Rectangle, Shell, Size,
+ Vector,
};
use crate::pane_grid::{Draggable, TitleBar};
@@ -250,13 +250,11 @@ where
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
is_picked: bool,
- ) -> 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();
- event_status = title_bar.on_event(
+ title_bar.on_event(
&mut tree.children[1],
event.clone(),
children.next().unwrap(),
@@ -272,9 +270,7 @@ where
layout
};
- let body_status = if is_picked {
- event::Status::Ignored
- } else {
+ if !is_picked {
self.body.as_widget_mut().on_event(
&mut tree.children[0],
event,
@@ -284,10 +280,8 @@ where
clipboard,
shell,
viewport,
- )
- };
-
- event_status.merge(body_status)
+ );
+ }
}
pub(crate) fn mouse_interaction(
diff --git a/widget/src/pane_grid/title_bar.rs b/widget/src/pane_grid/title_bar.rs
index 5002b4f7..ec1dc302 100644
--- a/widget/src/pane_grid/title_bar.rs
+++ b/widget/src/pane_grid/title_bar.rs
@@ -1,13 +1,12 @@
use crate::container;
-use crate::core::event::{self, Event};
use crate::core::layout;
use crate::core::mouse;
use crate::core::overlay;
use crate::core::renderer;
use crate::core::widget::{self, Tree};
use crate::core::{
- self, Clipboard, Element, Layout, Padding, Point, Rectangle, Shell, Size,
- Vector,
+ self, Clipboard, Element, Event, Layout, Padding, Point, Rectangle, Shell,
+ Size, Vector,
};
use crate::pane_grid::controls::Controls;
@@ -438,7 +437,7 @@ where
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
- ) -> event::Status {
+ ) {
let mut children = layout.children();
let padded = children.next().unwrap();
@@ -446,8 +445,9 @@ where
let title_layout = children.next().unwrap();
let mut show_title = true;
- let control_status = if let Some(controls) = &mut self.controls {
+ if let Some(controls) = &mut self.controls {
let controls_layout = children.next().unwrap();
+
if title_layout.bounds().width + controls_layout.bounds().width
> padded.bounds().width
{
@@ -463,7 +463,7 @@ where
clipboard,
shell,
viewport,
- )
+ );
} else {
show_title = false;
@@ -476,7 +476,7 @@ where
clipboard,
shell,
viewport,
- )
+ );
}
} else {
controls.full.as_widget_mut().on_event(
@@ -488,13 +488,11 @@ where
clipboard,
shell,
viewport,
- )
+ );
}
- } else {
- event::Status::Ignored
- };
+ }
- let title_status = if show_title {
+ if show_title {
self.content.as_widget_mut().on_event(
&mut tree.children[0],
event,
@@ -504,12 +502,8 @@ where
clipboard,
shell,
viewport,
- )
- } else {
- event::Status::Ignored
- };
-
- control_status.merge(title_status)
+ );
+ }
}
pub(crate) fn mouse_interaction(