scrollbar: Fix position may out of container bounds when clicked scrollbar bg. (#475)
This commit is contained in:
parent
59d9341280
commit
62ce148c19
1 changed files with 16 additions and 6 deletions
|
|
@ -496,6 +496,8 @@ impl Element for Scrollbar {
|
|||
}
|
||||
});
|
||||
|
||||
let safe_range = (-scroll_area_size + container_size)..px(0.);
|
||||
|
||||
cx.on_mouse_event({
|
||||
let state = self.state.clone();
|
||||
let view_id = self.view_id;
|
||||
|
|
@ -526,11 +528,17 @@ impl Element for Scrollbar {
|
|||
.min(1.);
|
||||
|
||||
if is_vertical {
|
||||
scroll_handle
|
||||
.set_offset(point(offset.x, -scroll_area_size * percentage));
|
||||
scroll_handle.set_offset(point(
|
||||
offset.x,
|
||||
(-scroll_area_size * percentage)
|
||||
.clamp(safe_range.start, safe_range.end),
|
||||
));
|
||||
} else {
|
||||
scroll_handle
|
||||
.set_offset(point(-scroll_area_size * percentage, offset.y));
|
||||
scroll_handle.set_offset(point(
|
||||
(-scroll_area_size * percentage)
|
||||
.clamp(safe_range.start, safe_range.end),
|
||||
offset.y,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -589,11 +597,13 @@ impl Element for Scrollbar {
|
|||
let offset = if is_vertical {
|
||||
point(
|
||||
scroll_handle.offset().x,
|
||||
-(scroll_area_size - container_size) * percentage,
|
||||
(-(scroll_area_size - container_size) * percentage)
|
||||
.clamp(safe_range.start, safe_range.end),
|
||||
)
|
||||
} else {
|
||||
point(
|
||||
-(scroll_area_size - container_size) * percentage,
|
||||
(-(scroll_area_size - container_size) * percentage)
|
||||
.clamp(safe_range.start, safe_range.end),
|
||||
scroll_handle.offset().y,
|
||||
)
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue