summaryrefslogtreecommitdiffstats
path: root/widget/src/lazy
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-10-25 19:28:18 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-11-05 23:52:58 +0100
commitdcc184b01b753dbecb500205391f6eaaa21c8683 (patch)
tree9f1854261c3b3805e28f524df65487c09c9729f7 /widget/src/lazy
parent752403d70c851ece620c4007710062b158e8dec3 (diff)
downloadiced-dcc184b01b753dbecb500205391f6eaaa21c8683.tar.gz
iced-dcc184b01b753dbecb500205391f6eaaa21c8683.tar.bz2
iced-dcc184b01b753dbecb500205391f6eaaa21c8683.zip
Replace `event::Status` in `Widget::on_event` with `Shell::capture_event`
Diffstat (limited to 'widget/src/lazy')
-rw-r--r--widget/src/lazy/component.rs43
-rw-r--r--widget/src/lazy/responsive.rs31
2 files changed, 32 insertions, 42 deletions
diff --git a/widget/src/lazy/component.rs b/widget/src/lazy/component.rs
index e45c24ac..062e6f35 100644
--- a/widget/src/lazy/component.rs
+++ b/widget/src/lazy/component.rs
@@ -1,6 +1,5 @@
//! Build and reuse custom widgets using The Elm Architecture.
#![allow(deprecated)]
-use crate::core::event;
use crate::core::layout::{self, Layout};
use crate::core::mouse;
use crate::core::overlay;
@@ -322,12 +321,12 @@ where
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
- ) -> event::Status {
+ ) {
let mut local_messages = Vec::new();
let mut local_shell = Shell::new(&mut local_messages);
let t = tree.state.downcast_mut::<Rc<RefCell<Option<Tree>>>>();
- let event_status = self.with_element_mut(|element| {
+ self.with_element_mut(|element| {
element.as_widget_mut().on_event(
&mut t.borrow_mut().as_mut().unwrap().children[0],
event,
@@ -337,9 +336,13 @@ where
clipboard,
&mut local_shell,
viewport,
- )
+ );
});
+ if local_shell.is_event_captured() {
+ shell.capture_event();
+ }
+
local_shell.revalidate_layout(|| shell.invalidate_layout());
if let Some(redraw_request) = local_shell.redraw_request() {
@@ -377,8 +380,6 @@ where
shell.invalidate_layout();
}
-
- event_status
}
fn operate(
@@ -608,22 +609,24 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
- ) -> event::Status {
+ ) {
let mut local_messages = Vec::new();
let mut local_shell = Shell::new(&mut local_messages);
- let event_status = self
- .with_overlay_mut_maybe(|overlay| {
- overlay.on_event(
- event,
- layout,
- cursor,
- renderer,
- clipboard,
- &mut local_shell,
- )
- })
- .unwrap_or(event::Status::Ignored);
+ let _ = self.with_overlay_mut_maybe(|overlay| {
+ overlay.on_event(
+ event,
+ layout,
+ cursor,
+ renderer,
+ clipboard,
+ &mut local_shell,
+ );
+ });
+
+ if local_shell.is_event_captured() {
+ shell.capture_event();
+ }
local_shell.revalidate_layout(|| shell.invalidate_layout());
@@ -673,8 +676,6 @@ where
shell.invalidate_layout();
}
-
- event_status
}
fn is_over(
diff --git a/widget/src/lazy/responsive.rs b/widget/src/lazy/responsive.rs
index a6c40ab0..c17798a6 100644
--- a/widget/src/lazy/responsive.rs
+++ b/widget/src/lazy/responsive.rs
@@ -1,4 +1,3 @@
-use crate::core::event::{self, Event};
use crate::core::layout::{self, Layout};
use crate::core::mouse;
use crate::core::overlay;
@@ -6,8 +5,8 @@ use crate::core::renderer;
use crate::core::widget;
use crate::core::widget::tree::{self, Tree};
use crate::core::{
- self, Clipboard, Element, Length, Point, Rectangle, Shell, Size, Vector,
- Widget,
+ self, Clipboard, Element, Event, Length, Point, Rectangle, Shell, Size,
+ Vector, Widget,
};
use crate::horizontal_space;
use crate::runtime::overlay::Nested;
@@ -193,14 +192,14 @@ where
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
- ) -> event::Status {
+ ) {
let state = tree.state.downcast_mut::<State>();
let mut content = self.content.borrow_mut();
let mut local_messages = vec![];
let mut local_shell = Shell::new(&mut local_messages);
- let status = content.resolve(
+ content.resolve(
&mut state.tree.borrow_mut(),
renderer,
layout,
@@ -215,7 +214,7 @@ where
clipboard,
&mut local_shell,
viewport,
- )
+ );
},
);
@@ -224,8 +223,6 @@ where
}
shell.merge(local_shell, std::convert::identity);
-
- status
}
fn draw(
@@ -425,28 +422,20 @@ where
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
- ) -> event::Status {
+ ) {
let mut is_layout_invalid = false;
- let event_status = self
- .with_overlay_mut_maybe(|overlay| {
- let event_status = overlay.on_event(
- event, layout, cursor, renderer, clipboard, shell,
- );
-
- is_layout_invalid = shell.is_layout_invalid();
+ let _ = self.with_overlay_mut_maybe(|overlay| {
+ overlay.on_event(event, layout, cursor, renderer, clipboard, shell);
- event_status
- })
- .unwrap_or(event::Status::Ignored);
+ is_layout_invalid = shell.is_layout_invalid();
+ });
if is_layout_invalid {
self.with_overlay_mut(|(_overlay, layout)| {
**layout = None;
});
}
-
- event_status
}
fn is_over(