summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector@hecrj.dev>2024-03-11 11:05:35 +0100
committerLibravatar GitHub <noreply@github.com>2024-03-11 11:05:35 +0100
commitaf8ab81403395f8b66f87bbe8150d007303fda54 (patch)
tree577b9b5acc081e49b2045e6c8acbe69cb467eb91 /widget
parentf00e7c4dc5f3fea085345a11c65133038be6342a (diff)
parent8a78353fa1f326267b40c23f31695951c467be1f (diff)
downloadiced-af8ab81403395f8b66f87bbe8150d007303fda54.tar.gz
iced-af8ab81403395f8b66f87bbe8150d007303fda54.tar.bz2
iced-af8ab81403395f8b66f87bbe8150d007303fda54.zip
Merge pull request #2322 from LuisLiraC/fix/release_scrollbar
Fix scrollbar dragged state after release left mouse button
Diffstat (limited to 'widget')
-rw-r--r--widget/src/scrollable.rs38
1 files changed, 16 insertions, 22 deletions
diff --git a/widget/src/scrollable.rs b/widget/src/scrollable.rs
index 4b916025..34312752 100644
--- a/widget/src/scrollable.rs
+++ b/widget/src/scrollable.rs
@@ -390,6 +390,21 @@ where
)
};
+ if matches!(
+ event,
+ Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left))
+ | Event::Touch(
+ touch::Event::FingerLifted { .. }
+ | touch::Event::FingerLost { .. }
+ )
+ ) {
+ state.scroll_area_touched_at = None;
+ state.x_scroller_grabbed_at = None;
+ state.y_scroller_grabbed_at = None;
+
+ return event_status;
+ }
+
if let event::Status::Captured = event_status {
return event::Status::Captured;
}
@@ -479,10 +494,7 @@ where
);
}
}
- touch::Event::FingerLifted { .. }
- | touch::Event::FingerLost { .. } => {
- state.scroll_area_touched_at = None;
- }
+ _ => {}
}
event_status = event::Status::Captured;
@@ -492,15 +504,6 @@ where
if let Some(scroller_grabbed_at) = state.y_scroller_grabbed_at {
match event {
- Event::Mouse(mouse::Event::ButtonReleased(
- mouse::Button::Left,
- ))
- | Event::Touch(touch::Event::FingerLifted { .. })
- | Event::Touch(touch::Event::FingerLost { .. }) => {
- state.y_scroller_grabbed_at = None;
-
- event_status = event::Status::Captured;
- }
Event::Mouse(mouse::Event::CursorMoved { .. })
| Event::Touch(touch::Event::FingerMoved { .. }) => {
if let Some(scrollbar) = scrollbars.y {
@@ -572,15 +575,6 @@ where
if let Some(scroller_grabbed_at) = state.x_scroller_grabbed_at {
match event {
- Event::Mouse(mouse::Event::ButtonReleased(
- mouse::Button::Left,
- ))
- | Event::Touch(touch::Event::FingerLifted { .. })
- | Event::Touch(touch::Event::FingerLost { .. }) => {
- state.x_scroller_grabbed_at = None;
-
- event_status = event::Status::Captured;
- }
Event::Mouse(mouse::Event::CursorMoved { .. })
| Event::Touch(touch::Event::FingerMoved { .. }) => {
let Some(cursor_position) = cursor.position() else {