LibGUI: Make Breadcrumbbar resizable below current size

By making proper use of the dynamic layout system, the Breadcrumbbar can
now shrink below its current (grown) size again, while still ensuring
that no icon gets cut off.
This commit is contained in:
FrHun 2022-10-05 18:29:51 +02:00 committed by Sam Atkins
parent 6e2fc0285e
commit 29a3ff22d7
Notes: sideshowbarker 2024-07-17 09:37:30 +09:00

View file

@ -109,7 +109,8 @@ void Breadcrumbbar::append_segment(String text, Gfx::Bitmap const* icon, String
auto button_width = min(button_text_width + icon_width + icon_padding + 16, max_button_width);
auto shrunken_width = icon_width + icon_padding + (icon ? 4 : 16);
button.set_fixed_size(button_width, 16 + 8);
button.set_max_size(button_width, 16 + 8);
button.set_min_size(shrunken_width, 16 + 8);
Segment segment { icon, text, data, button_width, shrunken_width, button.make_weak_ptr<GUI::Button>() };
@ -178,11 +179,11 @@ void Breadcrumbbar::relayout()
for (auto& segment : m_segments) {
if (remaining_width > width() && !segment.button->is_checked()) {
segment.button->set_fixed_width(segment.shrunken_width);
segment.button->set_preferred_width(segment.shrunken_width);
remaining_width -= (segment.width - segment.shrunken_width);
continue;
}
segment.button->set_fixed_width(segment.width);
segment.button->set_preferred_width(segment.width);
}
}