diff --git a/libs/ui/include/psemek/ui/asymmetric.hpp b/libs/ui/include/psemek/ui/asymmetric.hpp new file mode 100644 index 00000000..e0121315 --- /dev/null +++ b/libs/ui/include/psemek/ui/asymmetric.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include + +namespace psemek::ui +{ + + struct asymmetric + : element + { + virtual void set_width_first(bool value); + virtual bool width_first() const { return width_first_; } + + protected: + bool width_first_ = true; + }; + +} diff --git a/libs/ui/include/psemek/ui/container.hpp b/libs/ui/include/psemek/ui/container.hpp index 98e7e944..b99554dd 100644 --- a/libs/ui/include/psemek/ui/container.hpp +++ b/libs/ui/include/psemek/ui/container.hpp @@ -1,12 +1,12 @@ #pragma once -#include +#include namespace psemek::ui { struct container - : element + : asymmetric { virtual bool add_child(std::shared_ptr c) = 0; virtual bool has_child(element * c) const = 0; diff --git a/libs/ui/include/psemek/ui/grid_layout.hpp b/libs/ui/include/psemek/ui/grid_layout.hpp index 19469da2..347521b2 100644 --- a/libs/ui/include/psemek/ui/grid_layout.hpp +++ b/libs/ui/include/psemek/ui/grid_layout.hpp @@ -40,9 +40,6 @@ namespace psemek::ui virtual void set_outer_margin(bool value); virtual bool outer_margin() const { return outer_margin_; } - virtual void set_width_first(bool value); - virtual bool width_first() const { return width_first_; } - geom::box size_constraints() const override; geom::interval width_constraints(float height) const override; @@ -70,7 +67,6 @@ namespace psemek::ui std::vector column_weight_; bool outer_margin_ = true; - bool width_first_ = true; box_shape shape_; }; diff --git a/libs/ui/include/psemek/ui/single_container.hpp b/libs/ui/include/psemek/ui/single_container.hpp index 5aff6644..3a75758d 100644 --- a/libs/ui/include/psemek/ui/single_container.hpp +++ b/libs/ui/include/psemek/ui/single_container.hpp @@ -1,12 +1,12 @@ #pragma once -#include +#include namespace psemek::ui { struct single_container - : element + : asymmetric { children_range children() const override { return children_; } diff --git a/libs/ui/source/asymmetric.cpp b/libs/ui/source/asymmetric.cpp new file mode 100644 index 00000000..d81541de --- /dev/null +++ b/libs/ui/source/asymmetric.cpp @@ -0,0 +1,12 @@ +#include + +namespace psemek::ui +{ + + void asymmetric::set_width_first(bool value) + { + width_first_ = value; + post_reshape(); + } + +} diff --git a/libs/ui/source/grid_layout.cpp b/libs/ui/source/grid_layout.cpp index 0734e3d8..7dc1e64d 100644 --- a/libs/ui/source/grid_layout.cpp +++ b/libs/ui/source/grid_layout.cpp @@ -149,12 +149,6 @@ namespace psemek::ui post_reshape(); } - void grid_layout::set_width_first(bool value) - { - width_first_ = value; - post_reshape(); - } - template static std::vector> cell_sizes(util::array, 2> const & children) {