From 5ddf8795d5d0e037f23bdbc154d4116af3869eee Mon Sep 17 00:00:00 2001 From: lisyarus Date: Wed, 13 Oct 2021 22:51:44 +0300 Subject: [PATCH] Add grid layout child adding helpers --- libs/ui/include/psemek/ui/grid_layout.hpp | 5 +++++ libs/ui/source/grid_layout.cpp | 26 +++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/libs/ui/include/psemek/ui/grid_layout.hpp b/libs/ui/include/psemek/ui/grid_layout.hpp index d110e6a7..ec5b9f57 100644 --- a/libs/ui/include/psemek/ui/grid_layout.hpp +++ b/libs/ui/include/psemek/ui/grid_layout.hpp @@ -32,6 +32,11 @@ namespace psemek::ui virtual std::shared_ptr set(std::size_t i, std::size_t j, std::shared_ptr c); virtual std::shared_ptr remove(std::size_t i, std::size_t j); + virtual void add_row(); + virtual void add_row(std::shared_ptr c); + virtual void add_column(); + virtual void add_column(std::shared_ptr c); + virtual void set_outer_margin(bool value); virtual bool outer_margin() const { return outer_margin_; } diff --git a/libs/ui/source/grid_layout.cpp b/libs/ui/source/grid_layout.cpp index 46551cbb..1097a346 100644 --- a/libs/ui/source/grid_layout.cpp +++ b/libs/ui/source/grid_layout.cpp @@ -121,6 +121,28 @@ namespace psemek::ui return set(i, j, nullptr); } + void grid_layout::add_row() + { + set_row_count(row_count() + 1); + } + + void grid_layout::add_row(std::shared_ptr c) + { + set_row_count(row_count() + 1); + set(row_count() - 1, 0, c); + } + + void grid_layout::add_column() + { + set_column_count(column_count() + 1); + } + + void grid_layout::add_column(std::shared_ptr c) + { + set_column_count(column_count() + 1); + set(0, column_count() - 1, c); + } + void grid_layout::set_outer_margin(bool value) { outer_margin_ = value; @@ -150,7 +172,7 @@ namespace psemek::ui geom::box grid_layout::size_constraints() const { - auto st = merged_style(); + auto st = merged_own_style(); if (!st) return element::size_constraints(); auto row_column_size = row_column_sizes(children_); @@ -186,7 +208,7 @@ namespace psemek::ui void grid_layout::reshape(geom::box const & bbox) { - auto st = merged_style(); + auto st = merged_own_style(); if (!st) return; float const margin = *st->outer_margin;