From 8746e8e43c9c47454ca7a115969cd07746fd832e Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 11 Sep 2024 01:08:44 +0200 Subject: Hard limit on scroll without animation when reaching top/bottom --- src/gui/ScrollablePage.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/gui/ScrollablePage.cpp') diff --git a/src/gui/ScrollablePage.cpp b/src/gui/ScrollablePage.cpp index a91367c..62f2a3e 100644 --- a/src/gui/ScrollablePage.cpp +++ b/src/gui/ScrollablePage.cpp @@ -74,7 +74,6 @@ namespace gsr { const mgl::vec2f scrollbar_pos = position + offset + mgl::vec2f(size.x - scrollbar_width, 0.0f); offset = position + offset; - const mgl::vec2f page_scroll_start = offset; mgl_scissor prev_scissor; mgl_window_get_scissor(window.internal_window(), &prev_scissor); @@ -143,11 +142,13 @@ namespace gsr { } // Top and bottom limit - const double child_draw_overflow = (page_scroll_start.y + size.y) - child_bottom; + const double scroll_bottom_limit = child_height - size.y; if(scroll_y > 0.001 || child_height < size.y) { + scroll_y = 0; scroll_target_y = 0; - } else if(child_draw_overflow > 0.001) { - scroll_target_y = scroll_y + child_draw_overflow; + } else if(scroll_y < -scroll_bottom_limit) { + scroll_y = -scroll_bottom_limit; + scroll_target_y = -scroll_bottom_limit; } mgl_window_set_scissor(window.internal_window(), &prev_scissor); @@ -179,7 +180,6 @@ namespace gsr { } if(moving_scrollbar_with_cursor) { - const double scroll_bottom_limit = child_height - size.y; const mgl::vec2f scrollbar_move_diff = window.get_mouse_position().to_vec2f() - scrollbar_move_cursor_start_pos; const double scroll_amount = scrollbar_move_diff.y / scrollbar_empty_space; scroll_y = scrollbar_move_cursor_scroll_y_start - scroll_amount * (child_height - size.y); -- cgit v1.2.3