From 59de6682bab761236577dd8c5dd601ad8553d2e3 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 17 May 2022 23:14:33 +0300 Subject: [PATCH] Support retrieving buttons from spinbox --- libs/ui/include/psemek/ui/spinbox.hpp | 5 ++++- libs/ui/source/default_element_factory.cpp | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libs/ui/include/psemek/ui/spinbox.hpp b/libs/ui/include/psemek/ui/spinbox.hpp index b5d345be..6e4db3f6 100644 --- a/libs/ui/include/psemek/ui/spinbox.hpp +++ b/libs/ui/include/psemek/ui/spinbox.hpp @@ -8,6 +8,7 @@ namespace psemek::ui { struct label; + struct button; struct spinbox : element @@ -28,7 +29,9 @@ namespace psemek::ui virtual void on_value_changed(on_value_changed_callback callback, bool notify = true); - virtual struct label * label() { return nullptr; } + virtual struct label * label() const { return nullptr; } + virtual button * dec_button() const { return nullptr; } + virtual button * inc_button() const { return nullptr; } protected: virtual void post_value_changed(); diff --git a/libs/ui/source/default_element_factory.cpp b/libs/ui/source/default_element_factory.cpp index c4a3008c..88bd83d4 100644 --- a/libs/ui/source/default_element_factory.cpp +++ b/libs/ui/source/default_element_factory.cpp @@ -692,6 +692,9 @@ namespace psemek::ui child_ = layout; children_range_[0] = child_.get(); child_->set_parent(this); + + inc_button_ = inc_button.get(); + dec_button_ = dec_button.get(); } geom::box size_constraints() const override @@ -717,6 +720,9 @@ namespace psemek::ui void draw(painter &) const override {} + button * dec_button() const override { return dec_button_; } + button * inc_button() const override { return inc_button_; } + ~spinbox_impl() { release_children(); @@ -725,6 +731,9 @@ namespace psemek::ui private: std::shared_ptr child_; element * children_range_[1] {nullptr}; + + button * inc_button_; + button * dec_button_; }; }