#pragma once #include #include #include #include #include class GWidget; class GLayout { public: GLayout(); virtual ~GLayout(); void add_widget(GWidget&); void add_layout(OwnPtr&&); virtual void run(GWidget&) = 0; void notify_adopted(Badge, GWidget&); void notify_disowned(Badge, GWidget&); GMargins margins() const { return m_margins; } void set_margins(const GMargins&); int spacing() const { return m_spacing; } void set_spacing(int); protected: struct Entry { WeakPtr widget; OwnPtr layout; }; WeakPtr m_owner; Vector m_entries; GMargins m_margins; int m_spacing { 0 }; };