mirror of
https://github.com/RGBCube/serenity
synced 2025-07-02 23:22:07 +00:00
LibGUI: Use new layout system in scrollable widgets
These changes are mainly nessecairy to remove dependence on the temporary implicit conversions currently still in place.
This commit is contained in:
parent
3451181fbf
commit
0d56d80514
2 changed files with 36 additions and 36 deletions
|
@ -37,31 +37,25 @@ void ScrollableContainerWidget::update_widget_size()
|
|||
if (!m_widget)
|
||||
return;
|
||||
m_widget->do_layout();
|
||||
auto new_size = Widget::content_size();
|
||||
|
||||
if (m_widget->layout()) {
|
||||
auto preferred_size = m_widget->layout()->preferred_size();
|
||||
if (m_widget->is_shrink_to_fit()) {
|
||||
if (preferred_size.width() != -1)
|
||||
new_size.set_width(preferred_size.width());
|
||||
if (preferred_size.height() != -1)
|
||||
new_size.set_height(preferred_size.height());
|
||||
} else {
|
||||
new_size = Gfx::Size {
|
||||
max(new_size.width(), preferred_size.width()),
|
||||
max(new_size.height(), preferred_size.height())
|
||||
};
|
||||
}
|
||||
if (m_widget->is_shrink_to_fit() && m_widget->layout()) {
|
||||
auto new_size = Widget::content_size();
|
||||
auto preferred_size = m_widget->effective_preferred_size();
|
||||
if (preferred_size.width().is_int())
|
||||
new_size.set_width(preferred_size.width().as_int());
|
||||
if (preferred_size.height().is_int())
|
||||
new_size.set_height(preferred_size.height().as_int());
|
||||
m_widget->resize(new_size);
|
||||
set_content_size(new_size);
|
||||
} else {
|
||||
auto inner_size = Widget::content_size();
|
||||
auto min_size = m_widget->effective_min_size();
|
||||
auto new_size = Gfx::Size {
|
||||
max(inner_size.width(), MUST(min_size.width().shrink_value())),
|
||||
max(inner_size.height(), MUST(min_size.height().shrink_value()))
|
||||
};
|
||||
m_widget->resize(new_size);
|
||||
set_content_size(new_size);
|
||||
}
|
||||
|
||||
auto min_size = m_widget->min_size();
|
||||
new_size = Gfx::Size {
|
||||
max(new_size.width(), min_size.width()),
|
||||
max(new_size.height(), min_size.height()),
|
||||
};
|
||||
|
||||
m_widget->resize(new_size);
|
||||
set_content_size(new_size);
|
||||
}
|
||||
|
||||
void ScrollableContainerWidget::resize_event(GUI::ResizeEvent& event)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue