From fd5a9b7863e7de81faf9b8b73ea6cdece9f17e57 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 27 Feb 2021 17:53:37 +0300 Subject: [PATCH] Support button icons --- libs/ui/include/psemek/ui/button.hpp | 6 ++ .../psemek/ui/default_element_factory.hpp | 3 + libs/ui/source/button.cpp | 17 +++++- libs/ui/source/default_element_factory.cpp | 59 +++++++++++++++---- 4 files changed, 71 insertions(+), 14 deletions(-) diff --git a/libs/ui/include/psemek/ui/button.hpp b/libs/ui/include/psemek/ui/button.hpp index 70d37073..914d3a33 100644 --- a/libs/ui/include/psemek/ui/button.hpp +++ b/libs/ui/include/psemek/ui/button.hpp @@ -2,6 +2,7 @@ #include #include +#include #include @@ -14,6 +15,9 @@ namespace psemek::ui struct label * label() { return label_.get(); } struct label const * label() const { return label_.get(); } + struct image_view * icon() { return icon_.get(); } + struct image_view const * icon() const { return icon_.get(); } + children_range children() const override; bool on_event(mouse_move const & e) override; @@ -39,6 +43,7 @@ namespace psemek::ui virtual void on_state_changed() {} void set_label(std::shared_ptr label); + void set_icon(std::shared_ptr icon); private: state_t state_ = state_t::normal; @@ -46,6 +51,7 @@ namespace psemek::ui on_click_callback callback_; std::shared_ptr label_; + std::shared_ptr icon_; element * children_[1]{nullptr}; }; diff --git a/libs/ui/include/psemek/ui/default_element_factory.hpp b/libs/ui/include/psemek/ui/default_element_factory.hpp index 7cebe2ec..fdeeff37 100644 --- a/libs/ui/include/psemek/ui/default_element_factory.hpp +++ b/libs/ui/include/psemek/ui/default_element_factory.hpp @@ -7,6 +7,8 @@ #include #include +#include + #include namespace psemek::ui @@ -18,6 +20,7 @@ namespace psemek::ui ~default_element_factory(); std::shared_ptr