Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
huacnlee committed Dec 20, 2024
1 parent 2f0834a commit 717e93d
Showing 1 changed file with 12 additions and 14 deletions.
26 changes: 12 additions & 14 deletions crates/ui/src/scroll/scrollable_mask.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,13 +126,14 @@ impl Element for ScrollableMask {
let hitbox = hitbox.clone();
let mouse_position = cx.mouse_position();
let scroll_handle = self.scroll_handle.clone();
let old_offset = scroll_handle.offset();
let last_offset = scroll_handle.offset();
let view_id = self.view.entity_id();
let is_horizontal = self.axis == ScrollableAxis::Horizontal;
let is_horizontal = matches!(self.axis, ScrollableAxis::Horizontal);

move |event: &ScrollWheelEvent, phase, cx| {
if bounds.contains(&mouse_position) && phase.bubble() && hitbox.is_hovered(cx) {
let mut delta = event.delta.pixel_delta(line_height);
let mut offset = scroll_handle.offset();

// Limit for only one way scrolling at same time.
// When use MacBook touchpad we may get both x and y delta,
Expand All @@ -145,21 +146,18 @@ impl Element for ScrollableMask {
}
}

if is_horizontal && !delta.x.is_zero() {
// When is horizontal scroll, move the horizontal scroll handle to make scrolling.
let mut offset = scroll_handle.offset();
offset.x += delta.x;
scroll_handle.set_offset(offset);
if is_horizontal {
if !delta.x.is_zero() {
offset.x += delta.x;
}
} else {
if !delta.y.is_zero() {
offset.y += delta.y;
}
}

if !is_horizontal && !delta.y.is_zero() {
// When is vertical scroll, move the vertical scroll handle to make scrolling.
let mut offset = scroll_handle.offset();
offset.y += delta.y;
if last_offset != offset {
scroll_handle.set_offset(offset);
}

if old_offset != scroll_handle.offset() {
cx.notify(Some(view_id));
cx.stop_propagation();
}
Expand Down

0 comments on commit 717e93d

Please sign in to comment.