1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-10 18:10:56 +09:00

LibGUI: Add custom layout change handling to ScrollableContainerWidget

This commit is contained in:
FrHun 2022-06-28 18:06:28 +02:00 committed by Andreas Kling
parent d0a418540e
commit 247e3ef6e7
Notes: sideshowbarker 2024-07-17 09:51:02 +09:00
2 changed files with 22 additions and 1 deletions

View file

@ -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();
}

View file

@ -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();