diff --git a/crates/egui/src/containers/scroll_area.rs b/crates/egui/src/containers/scroll_area.rs index 536b3c33a..e564fbe1e 100644 --- a/crates/egui/src/containers/scroll_area.rs +++ b/crates/egui/src/containers/scroll_area.rs @@ -966,17 +966,22 @@ impl Prepared { // top/bottom of a horizontal scroll (d==0). // left/rigth of a vertical scroll (d==1). let mut cross = if scroll_style.floating { + // The bounding rect of a fully visible bar. + // When we hover this area, we should show the full bar: let max_bar_rect = if d == 0 { - outer_rect.with_min_y(outer_rect.max.y - scroll_style.allocated_width()) + outer_rect.with_min_y(outer_rect.max.y - outer_margin - scroll_style.bar_width) } else { - outer_rect.with_min_x(outer_rect.max.x - scroll_style.allocated_width()) + outer_rect.with_min_x(outer_rect.max.x - outer_margin - scroll_style.bar_width) }; + let is_hovering_bar_area = is_hovering_outer_rect && ui.rect_contains_pointer(max_bar_rect) || state.scroll_bar_interaction[d]; + let is_hovering_bar_area_t = ui .ctx() .animate_bool_responsive(id.with((d, "bar_hover")), is_hovering_bar_area); + let width = show_factor * lerp( scroll_style.floating_width..=scroll_style.bar_width, diff --git a/crates/egui/src/style.rs b/crates/egui/src/style.rs index dc366ceee..6009a6b63 100644 --- a/crates/egui/src/style.rs +++ b/crates/egui/src/style.rs @@ -1163,9 +1163,9 @@ impl Default for Spacing { impl Default for Interaction { fn default() -> Self { Self { + interact_radius: 5.0, resize_grab_radius_side: 5.0, resize_grab_radius_corner: 10.0, - interact_radius: 5.0, show_tooltips_only_when_still: true, tooltip_delay: 0.5, tooltip_grace_time: 0.2,