From 43dddafd1684bec9a3ba083b58d2bc438cf726f5 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Thu, 16 Feb 2023 17:11:57 +0000 Subject: [PATCH] LibGUI: Allow specifying Layout margins and spacing in the constructor This is comfier than `my_widget->layout()->set_margins(...)`. --- Userland/Libraries/LibGUI/BoxLayout.cpp | 5 +++-- Userland/Libraries/LibGUI/BoxLayout.h | 10 +++++----- Userland/Libraries/LibGUI/Layout.cpp | 4 +++- Userland/Libraries/LibGUI/Layout.h | 5 +++-- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Userland/Libraries/LibGUI/BoxLayout.cpp b/Userland/Libraries/LibGUI/BoxLayout.cpp index 0416ef887a..963a9b8a7e 100644 --- a/Userland/Libraries/LibGUI/BoxLayout.cpp +++ b/Userland/Libraries/LibGUI/BoxLayout.cpp @@ -17,8 +17,9 @@ REGISTER_LAYOUT(GUI, VerticalBoxLayout) namespace GUI { -BoxLayout::BoxLayout(Orientation orientation) - : m_orientation(orientation) +BoxLayout::BoxLayout(Orientation orientation, Margins margins, int spacing) + : Layout(margins, spacing) + , m_orientation(orientation) { register_property( "orientation", [this] { return m_orientation == Gfx::Orientation::Vertical ? "Vertical" : "Horizontal"; }, nullptr); diff --git a/Userland/Libraries/LibGUI/BoxLayout.h b/Userland/Libraries/LibGUI/BoxLayout.h index 2232ef6782..27ee6b2297 100644 --- a/Userland/Libraries/LibGUI/BoxLayout.h +++ b/Userland/Libraries/LibGUI/BoxLayout.h @@ -26,7 +26,7 @@ public: virtual UISize min_size() const override; protected: - explicit BoxLayout(Gfx::Orientation); + explicit BoxLayout(Gfx::Orientation, Margins = {}, int spacing = Layout::default_spacing); private: Gfx::Orientation m_orientation; @@ -36,8 +36,8 @@ class VerticalBoxLayout final : public BoxLayout { C_OBJECT(VerticalBoxLayout); private: - explicit VerticalBoxLayout() - : BoxLayout(Gfx::Orientation::Vertical) + explicit VerticalBoxLayout(Margins margins = {}, int spacing = Layout::default_spacing) + : BoxLayout(Gfx::Orientation::Vertical, margins, spacing) { } virtual ~VerticalBoxLayout() override = default; @@ -47,8 +47,8 @@ class HorizontalBoxLayout final : public BoxLayout { C_OBJECT(HorizontalBoxLayout); private: - explicit HorizontalBoxLayout() - : BoxLayout(Gfx::Orientation::Horizontal) + explicit HorizontalBoxLayout(Margins margins = {}, int spacing = Layout::default_spacing) + : BoxLayout(Gfx::Orientation::Horizontal, margins, spacing) { } virtual ~HorizontalBoxLayout() override = default; diff --git a/Userland/Libraries/LibGUI/Layout.cpp b/Userland/Libraries/LibGUI/Layout.cpp index 807b26446a..ec1d32b48d 100644 --- a/Userland/Libraries/LibGUI/Layout.cpp +++ b/Userland/Libraries/LibGUI/Layout.cpp @@ -14,7 +14,9 @@ REGISTER_ABSTRACT_CORE_OBJECT(GUI, Layout) namespace GUI { -Layout::Layout() +Layout::Layout(Margins initial_margins, int spacing) + : m_margins(initial_margins) + , m_spacing(spacing) { REGISTER_INT_PROPERTY("spacing", spacing, set_spacing); REGISTER_MARGINS_PROPERTY("margins", margins, set_margins); diff --git a/Userland/Libraries/LibGUI/Layout.h b/Userland/Libraries/LibGUI/Layout.h index b194e9dfa9..da01aac212 100644 --- a/Userland/Libraries/LibGUI/Layout.h +++ b/Userland/Libraries/LibGUI/Layout.h @@ -58,11 +58,12 @@ public: Margins const& margins() const { return m_margins; } void set_margins(Margins const&); + static constexpr int default_spacing = 3; int spacing() const { return m_spacing; } void set_spacing(int); protected: - Layout(); + Layout(Margins, int spacing); struct Entry { enum class Type { @@ -83,7 +84,7 @@ protected: Vector m_entries; Margins m_margins; - int m_spacing { 3 }; + int m_spacing { default_spacing }; }; }