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({
|
cx.on_mouse_event({
|
||||||
let state = self.state.clone();
|
let state = self.state.clone();
|
||||||
let view_id = self.view_id;
|
let view_id = self.view_id;
|
||||||
|
|
@ -526,11 +528,17 @@ impl Element for Scrollbar {
|
||||||
.min(1.);
|
.min(1.);
|
||||||
|
|
||||||
if is_vertical {
|
if is_vertical {
|
||||||
scroll_handle
|
scroll_handle.set_offset(point(
|
||||||
.set_offset(point(offset.x, -scroll_area_size * percentage));
|
offset.x,
|
||||||
|
(-scroll_area_size * percentage)
|
||||||
|
.clamp(safe_range.start, safe_range.end),
|
||||||
|
));
|
||||||
} else {
|
} else {
|
||||||
scroll_handle
|
scroll_handle.set_offset(point(
|
||||||
.set_offset(point(-scroll_area_size * percentage, offset.y));
|
(-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 {
|
let offset = if is_vertical {
|
||||||
point(
|
point(
|
||||||
scroll_handle.offset().x,
|
scroll_handle.offset().x,
|
||||||
-(scroll_area_size - container_size) * percentage,
|
(-(scroll_area_size - container_size) * percentage)
|
||||||
|
.clamp(safe_range.start, safe_range.end),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
point(
|
point(
|
||||||
-(scroll_area_size - container_size) * percentage,
|
(-(scroll_area_size - container_size) * percentage)
|
||||||
|
.clamp(safe_range.start, safe_range.end),
|
||||||
scroll_handle.offset().y,
|
scroll_handle.offset().y,
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue