LibGUI: Calculate unclamped_scrubber_size() as float

Large enough content ranges produced unclamped scrubbers sized zero,
effectively clamped by their integer type. This led to zero sized
page_increments and scrubbers which didn't budge on gutter events.
This fixes broken gutters in FontEditor and TextEditor for large
files.
This commit is contained in:
thankyouverycool 2021-09-21 17:51:56 -04:00 committed by Andreas Kling
parent e8f3fda3cf
commit 3159e548a5
Notes: sideshowbarker 2024-07-18 03:33:32 +09:00
2 changed files with 5 additions and 5 deletions

View file

@ -123,12 +123,12 @@ bool Scrollbar::has_scrubber() const
return max() != min();
}
int Scrollbar::unclamped_scrubber_size() const
float Scrollbar::unclamped_scrubber_size() const
{
int pixel_range = length(orientation()) - button_size() * 2;
int value_range = max() - min();
float pixel_range = length(orientation()) - button_size() * 2;
float value_range = max() - min();
int scrubber_size = 0;
float scrubber_size { 0 };
if (value_range > 0) {
// Scrubber size should be proportional to the visible portion
// (page) in relation to the content (value range + page)

View file

@ -48,7 +48,7 @@ private:
Gfx::IntRect decrement_button_rect() const;
Gfx::IntRect increment_button_rect() const;
Gfx::IntRect scrubber_rect() const;
int unclamped_scrubber_size() const;
float unclamped_scrubber_size() const;
int visible_scrubber_size() const;
int scrubbable_range_in_pixels() const;
void on_automatic_scrolling_timer_fired();