GLayout.h 809 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #pragma once
  2. #include <AK/Badge.h>
  3. #include <AK/OwnPtr.h>
  4. #include <AK/Vector.h>
  5. #include <AK/WeakPtr.h>
  6. #include <LibGUI/GMargins.h>
  7. class GWidget;
  8. class GLayout {
  9. public:
  10. GLayout();
  11. virtual ~GLayout();
  12. void add_widget(GWidget&);
  13. void add_layout(OwnPtr<GLayout>&&);
  14. virtual void run(GWidget&) = 0;
  15. void notify_adopted(Badge<GWidget>, GWidget&);
  16. void notify_disowned(Badge<GWidget>, GWidget&);
  17. GMargins margins() const { return m_margins; }
  18. void set_margins(const GMargins&);
  19. int spacing() const { return m_spacing; }
  20. void set_spacing(int);
  21. protected:
  22. struct Entry {
  23. WeakPtr<GWidget> widget;
  24. OwnPtr<GLayout> layout;
  25. };
  26. WeakPtr<GWidget> m_owner;
  27. Vector<Entry> m_entries;
  28. GMargins m_margins;
  29. int m_spacing { 0 };
  30. };