diff options
author | 2024-11-13 17:08:26 +0100 | |
---|---|---|
committer | 2024-11-13 17:08:26 +0100 | |
commit | a11fcf8f2dde551335c6f34788393fa2e8f8a362 (patch) | |
tree | 1e423c847a6505a2582bec19908866dba94c436d /widget/src/text | |
parent | 42a2cb6d4f78343f43d6a68a28e5502d9426ed2c (diff) | |
parent | 28ec6df8f0ebf96966bee61caf5a325695314b7a (diff) | |
download | iced-a11fcf8f2dde551335c6f34788393fa2e8f8a362.tar.gz iced-a11fcf8f2dde551335c6f34788393fa2e8f8a362.tar.bz2 iced-a11fcf8f2dde551335c6f34788393fa2e8f8a362.zip |
Merge pull request #2662 from iced-rs/reactive-rendering
Reactive Rendering
Diffstat (limited to 'widget/src/text')
-rw-r--r-- | widget/src/text/rich.rs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/widget/src/text/rich.rs b/widget/src/text/rich.rs index 3d241375..7ef2707b 100644 --- a/widget/src/text/rich.rs +++ b/widget/src/text/rich.rs @@ -1,5 +1,4 @@ use crate::core::alignment; -use crate::core::event; use crate::core::layout; use crate::core::mouse; use crate::core::renderer; @@ -355,7 +354,7 @@ where ); } - fn on_event( + fn update( &mut self, tree: &mut Tree, event: Event, @@ -365,7 +364,7 @@ where _clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Link>, _viewport: &Rectangle, - ) -> event::Status { + ) { match event { Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => { if let Some(position) = cursor.position_in(layout.bounds()) { @@ -374,9 +373,16 @@ where .downcast_mut::<State<Link, Renderer::Paragraph>>(); if let Some(span) = state.paragraph.hit_span(position) { - state.span_pressed = Some(span); - - return event::Status::Captured; + if self + .spans + .as_ref() + .as_ref() + .get(span) + .is_some_and(|span| span.link.is_some()) + { + state.span_pressed = Some(span); + shell.capture_event(); + } } } } @@ -409,8 +415,6 @@ where } _ => {} } - - event::Status::Ignored } fn mouse_interaction( |