mirror of
https://github.com/RGBCube/serenity
synced 2025-07-23 20:07:34 +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();
|
auto available_size = this->available_size();
|
||||||
|
|
||||||
int excess_height = max(0, m_content_size.height() - available_size.height());
|
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());
|
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);
|
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());
|
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