mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-06 16:45:03 +00:00
LibGUI: Add custom layout change handling to ScrollableContainerWidget
This commit is contained in:
@@ -58,11 +58,29 @@ void ScrollableContainerWidget::update_widget_size()
|
||||
}
|
||||
}
|
||||
|
||||
void ScrollableContainerWidget::update_widget_min_size()
|
||||
{
|
||||
if (!m_widget)
|
||||
set_min_content_size({});
|
||||
else
|
||||
set_min_content_size(Gfx::IntSize(m_widget->effective_min_size().replace_component_if_matching_with(SpecialDimension::Shrink, UISize { 0, 0 })));
|
||||
}
|
||||
|
||||
void ScrollableContainerWidget::resize_event(GUI::ResizeEvent& event)
|
||||
{
|
||||
AbstractScrollableWidget::resize_event(event);
|
||||
update_widget_position();
|
||||
update_widget_size();
|
||||
update_widget_position();
|
||||
}
|
||||
|
||||
void ScrollableContainerWidget::layout_relevant_change_occured()
|
||||
{
|
||||
update_widget_min_size();
|
||||
update_scrollbar_visibility();
|
||||
update_scrollbar_ranges();
|
||||
update_widget_size();
|
||||
update_widget_position();
|
||||
update();
|
||||
}
|
||||
|
||||
void ScrollableContainerWidget::set_widget(GUI::Widget* widget)
|
||||
@@ -79,6 +97,7 @@ void ScrollableContainerWidget::set_widget(GUI::Widget* widget)
|
||||
add_child(*m_widget);
|
||||
m_widget->move_to_back();
|
||||
}
|
||||
update_widget_min_size();
|
||||
update_widget_size();
|
||||
update_widget_position();
|
||||
}
|
||||
|
||||
@@ -24,10 +24,12 @@ public:
|
||||
protected:
|
||||
virtual void did_scroll() override;
|
||||
virtual void resize_event(GUI::ResizeEvent&) override;
|
||||
virtual void layout_relevant_change_occured() override;
|
||||
|
||||
private:
|
||||
void update_widget_size();
|
||||
void update_widget_position();
|
||||
void update_widget_min_size();
|
||||
virtual bool load_from_gml_ast(NonnullRefPtr<GUI::GML::Node> ast, RefPtr<Core::Object> (*unregistered_child_handler)(String const&)) override;
|
||||
|
||||
ScrollableContainerWidget();
|
||||
|
||||
Reference in New Issue
Block a user