mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 10:48:11 +00:00
LibGUI: Set correct ranges for hidable scrollbars
Fixes vertical and horizontal overscroll in widgets that allow unnecessary scrollbars to be hidden.
This commit is contained in:
parent
f24287e0e1
commit
01e00bac9d
1 changed files with 16 additions and 9 deletions
|
@ -111,19 +111,26 @@ void ScrollableWidget::update_scrollbar_ranges()
|
|||
auto available_size = this->available_size();
|
||||
|
||||
int excess_height = max(0, m_content_size.height() - available_size.height());
|
||||
m_vertical_scrollbar->set_range(0, excess_height);
|
||||
m_vertical_scrollbar->set_page_step(available_size.height());
|
||||
|
||||
if (should_hide_unnecessary_scrollbars())
|
||||
m_vertical_scrollbar->set_visible(excess_height > 0);
|
||||
|
||||
int excess_width = max(0, m_content_size.width() - available_size.width());
|
||||
m_horizontal_scrollbar->set_range(0, excess_width);
|
||||
m_horizontal_scrollbar->set_page_step(available_size.width());
|
||||
|
||||
if (should_hide_unnecessary_scrollbars())
|
||||
auto vertical_initial_visibility = m_vertical_scrollbar->is_visible();
|
||||
auto horizontal_initial_visibility = m_horizontal_scrollbar->is_visible();
|
||||
|
||||
if (should_hide_unnecessary_scrollbars()) {
|
||||
m_vertical_scrollbar->set_visible(excess_height > 0);
|
||||
m_horizontal_scrollbar->set_visible(excess_width > 0);
|
||||
}
|
||||
|
||||
if (m_vertical_scrollbar->is_visible() != vertical_initial_visibility || m_horizontal_scrollbar->is_visible() != horizontal_initial_visibility) {
|
||||
available_size = this->available_size();
|
||||
excess_height = max(0, m_content_size.height() - available_size.height());
|
||||
excess_width = max(0, m_content_size.width() - available_size.width());
|
||||
}
|
||||
|
||||
m_horizontal_scrollbar->set_range(0, excess_width);
|
||||
m_horizontal_scrollbar->set_page_step(visible_content_rect().width() - m_horizontal_scrollbar->step());
|
||||
|
||||
m_vertical_scrollbar->set_range(0, excess_height);
|
||||
m_vertical_scrollbar->set_page_step(visible_content_rect().height() - m_vertical_scrollbar->step());
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue