1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:07:45 +00:00

LibGUI: Fix uniform TabWidget tabs bleeding outside the widget

The last uniform-sized tab button would bleed outside the tab bar area
due to us not taking the bar margin into account.
This commit is contained in:
Andreas Kling 2021-04-09 22:30:41 +02:00
parent 1029069ad6
commit bcd05e199b
2 changed files with 5 additions and 3 deletions

View file

@ -278,8 +278,9 @@ int TabWidget::uniform_tab_width() const
int maximum_tab_width = 160;
int total_tab_width = m_tabs.size() * maximum_tab_width;
int tab_width = maximum_tab_width;
if (total_tab_width > width())
tab_width = width() / m_tabs.size();
int available_width = width() - bar_margin() * 2;
if (total_tab_width > available_width)
tab_width = available_width / m_tabs.size();
return max(tab_width, minimum_tab_width);
}
@ -293,7 +294,7 @@ void TabWidget::set_bar_visible(bool bar_visible)
Gfx::IntRect TabWidget::button_rect(int index) const
{
int x_offset = 2;
int x_offset = bar_margin();
for (int i = 0; i < index; ++i) {
auto tab_width = m_uniform_tabs ? uniform_tab_width() : m_tabs[i].width(font());
x_offset += tab_width;

View file

@ -108,6 +108,7 @@ private:
Gfx::IntRect container_rect() const;
void update_bar();
void update_focus_policy();
int bar_margin() const { return 2; }
RefPtr<Widget> m_active_widget;