From 3e02fd41602b19feb7a69c65c2a62cc716287c31 Mon Sep 17 00:00:00 2001 From: ickshonpe Date: Fri, 11 Jul 2025 16:00:13 +0100 Subject: [PATCH] Fixed scroll offset clamping to include scrollbar size. --- crates/bevy_ui/src/layout/mod.rs | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/crates/bevy_ui/src/layout/mod.rs b/crates/bevy_ui/src/layout/mod.rs index 27afa7f443..287c9f958d 100644 --- a/crates/bevy_ui/src/layout/mod.rs +++ b/crates/bevy_ui/src/layout/mod.rs @@ -327,20 +327,11 @@ with UI components as a child of an entity without UI components, your UI layout }) .unwrap_or_default(); - let max_possible_offset = (content_size - layout_size).max(Vec2::ZERO); - let clamped_scroll_position = scroll_position.clamp( - Vec2::ZERO, - max_possible_offset * inverse_target_scale_factor, - ); + let max_possible_offset = + (content_size - layout_size + node.scrollbar_size).max(Vec2::ZERO); + let clamped_scroll_position = scroll_position.clamp(Vec2::ZERO, max_possible_offset); - if clamped_scroll_position != scroll_position { - commands - .entity(entity) - .insert(ScrollPosition(clamped_scroll_position)); - } - - let physical_scroll_position = - (clamped_scroll_position / inverse_target_scale_factor).round(); + let physical_scroll_position = clamped_scroll_position.floor(); for child_uinode in ui_children.iter_ui_children(entity) { update_uinode_geometry_recursive(