diff options
author | 杨宇千 <crupest@outlook.com> | 2019-03-28 20:39:36 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-28 20:39:36 +0800 |
commit | c45a6e62298e972f5945f5f3461ed723aea80317 (patch) | |
tree | f46ef303ee87a8e3814ea8743bd7062d432bfee3 /src/ui/controls/button.hpp | |
parent | b028e74a48de181ca078ad3bf4ababf4fa146cd3 (diff) | |
parent | 37216f211b0e22205a3a0d3373d985fc68aea59b (diff) | |
download | cru-c45a6e62298e972f5945f5f3461ed723aea80317.tar.gz cru-c45a6e62298e972f5945f5f3461ed723aea80317.tar.bz2 cru-c45a6e62298e972f5945f5f3461ed723aea80317.zip |
Merge pull request #37 from crupest/render
Refactor.
Diffstat (limited to 'src/ui/controls/button.hpp')
-rw-r--r-- | src/ui/controls/button.hpp | 61 |
1 files changed, 28 insertions, 33 deletions
diff --git a/src/ui/controls/button.hpp b/src/ui/controls/button.hpp index 82694fe8..3f313dfc 100644 --- a/src/ui/controls/button.hpp +++ b/src/ui/controls/button.hpp @@ -1,44 +1,39 @@ #pragma once - -// ReSharper disable once CppUnusedIncludeDirective #include "pre.hpp" -#include <initializer_list> +#include <memory> -#include "ui/control.hpp" +#include "ui/content_control.hpp" -namespace cru::ui::controls -{ - class Button : public SingleChildControl - { - public: - static constexpr auto control_type = L"Button"; +namespace cru::ui::render { +class BorderRenderObject; +} - static Button* Create(Control* child = nullptr) - { - const auto button = new Button(); - button->SetChild(child); - return button; - } +namespace cru::ui::controls { +class Button : public ContentControl { + public: + static constexpr auto control_type = L"Button"; - protected: - Button(); + static Button* Create() { return new Button(); } - public: - Button(const Button& other) = delete; - Button(Button&& other) = delete; - Button& operator=(const Button& other) = delete; - Button& operator=(Button&& other) = delete; - ~Button() override = default; + protected: + Button(); - StringView GetControlType() const override final; + public: + Button(const Button& other) = delete; + Button(Button&& other) = delete; + Button& operator=(const Button& other) = delete; + Button& operator=(Button&& other) = delete; + ~Button() override = default; - protected: - void OnMouseClickBegin(MouseButton button) override final; - void OnMouseClickEnd(MouseButton button) override final; + StringView GetControlType() const override final { return control_type; } - private: - BorderProperty normal_border_; - BorderProperty pressed_border_; - }; -} + render::RenderObject* GetRenderObject() const override; + + protected: + void OnChildChanged(Control* old_child, Control* new_child) override; + + private: + std::shared_ptr<render::BorderRenderObject> render_object_{}; +}; +} // namespace cru::ui::controls |