1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 22:17:44 +00:00

LibGUI: Add preferred_size to Widget

This commit is contained in:
FrHun 2022-06-12 22:16:39 +02:00 committed by Sam Atkins
parent a4aced7f3a
commit bd277939a1
2 changed files with 20 additions and 0 deletions

View file

@ -51,12 +51,15 @@ Widget::Widget()
REGISTER_UI_SIZE_PROPERTY("min_size", min_size, set_min_size);
REGISTER_UI_SIZE_PROPERTY("max_size", max_size, set_max_size);
REGISTER_UI_SIZE_PROPERTY("preferred_size", preferred_size, set_preferred_size);
REGISTER_INT_PROPERTY("width", width, set_width);
REGISTER_UI_DIMENSION_PROPERTY("min_width", min_width, set_min_width);
REGISTER_UI_DIMENSION_PROPERTY("max_width", max_width, set_max_width);
REGISTER_UI_DIMENSION_PROPERTY("preferred_width", preferred_width, set_preferred_width);
REGISTER_INT_PROPERTY("height", height, set_height);
REGISTER_UI_DIMENSION_PROPERTY("min_height", min_height, set_min_height);
REGISTER_UI_DIMENSION_PROPERTY("max_height", max_height, set_max_height);
REGISTER_UI_DIMENSION_PROPERTY("preferred_height", preferred_height, set_preferred_height);
REGISTER_INT_PROPERTY("fixed_width", dummy_fixed_width, set_fixed_width);
REGISTER_INT_PROPERTY("fixed_height", dummy_fixed_height, set_fixed_height);
@ -798,6 +801,14 @@ void Widget::set_max_size(UISize const& size)
invalidate_layout();
}
void Widget::set_preferred_size(UISize const& size)
{
if (m_preferred_size == size)
return;
m_preferred_size = size;
invalidate_layout();
}
void Widget::invalidate_layout()
{
if (window())

View file

@ -99,6 +99,14 @@ public:
void set_max_width(UIDimension width) { set_max_size(width, max_height()); }
void set_max_height(UIDimension height) { set_max_size(max_width(), height); }
UISize preferred_size() const { return m_preferred_size; }
void set_preferred_size(UISize const&);
void set_preferred_size(UIDimension width, UIDimension height) { set_preferred_size({ width, height }); }
UIDimension preferred_width() const { return m_preferred_size.width(); }
UIDimension preferred_height() const { return m_preferred_size.height(); }
void set_preferred_width(UIDimension width) { set_preferred_size(width, preferred_height()); }
void set_preferred_height(UIDimension height) { set_preferred_size(preferred_width(), height); }
void set_fixed_size(UISize const& size)
{
VERIFY(size.has_only_int_values());
@ -383,6 +391,7 @@ private:
UISize m_min_size { SpecialDimension::Shrink };
UISize m_max_size { SpecialDimension::Grow };
UISize m_preferred_size { SpecialDimension::Grow };
Margins m_grabbable_margins;
bool m_fill_with_background_color { false };