diff options
author | crupest <crupest@outlook.com> | 2020-03-18 22:57:08 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-03-18 22:57:08 +0800 |
commit | c5a4f8c11d0d84d85359e5ff03477da5e9f12926 (patch) | |
tree | 47122aa3c07ecc536ca387f416de1179c8203329 /include/cru/ui/controls/text_common.hpp | |
parent | bfd277f9f621931a1c6ea05ea2cd6d04455cfe67 (diff) | |
download | cru-c5a4f8c11d0d84d85359e5ff03477da5e9f12926.tar.gz cru-c5a4f8c11d0d84d85359e5ff03477da5e9f12926.tar.bz2 cru-c5a4f8c11d0d84d85359e5ff03477da5e9f12926.zip |
...
Diffstat (limited to 'include/cru/ui/controls/text_common.hpp')
-rw-r--r-- | include/cru/ui/controls/text_common.hpp | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/include/cru/ui/controls/text_common.hpp b/include/cru/ui/controls/text_common.hpp deleted file mode 100644 index 64a9666c..00000000 --- a/include/cru/ui/controls/text_common.hpp +++ /dev/null @@ -1,80 +0,0 @@ -#pragma once -#include "../base.hpp" - -#include "cru/ui/ui_event.hpp" - -namespace cru::platform::graph { -struct IBrush; -} - -namespace cru::ui::render { -class TextRenderObject; -class CanvasRenderObject; -} // namespace cru::ui::render - -namespace cru::ui::controls { - -struct ITextControl : virtual Interface { - virtual render::TextRenderObject* GetTextRenderObject() = 0; - virtual render::CanvasRenderObject* GetCaretRenderObject() = 0; - virtual platform::graph::IBrush* GetCaretBrush() = 0; -}; - -class TextControlService : public Object { - public: - TextControlService(Control* control, ITextControl* text_control); - - CRU_DELETE_COPY(TextControlService) - CRU_DELETE_MOVE(TextControlService) - - ~TextControlService(); - - public: - bool IsEnabled() { return enable_; } - void SetEnabled(bool enable); - - int GetCaretPosition() { return caret_position_; } - void SetCaretPosition(int position) { caret_position_ = position; } - - bool IsCaretVisible() { return caret_visible_; } - void SetCaretVisible(bool visible); - - // please set correct offset before calling this - void DrawCaret(platform::graph::IPainter* painter); - - private: - void AbortSelection(); - - void SetupCaretTimer(); - void TearDownCaretTimer(); - - void SetupHandlers(); - - void MouseMoveHandler(event::MouseEventArgs& args); - void MouseDownHandler(event::MouseButtonEventArgs& args); - void MouseUpHandler(event::MouseButtonEventArgs& args); - void LoseFocusHandler(event::FocusChangeEventArgs& args); - - private: - Control* control_; - ITextControl* text_control_; - std::vector<EventRevokerGuard> event_revoker_guards_; - - bool enable_ = false; - - bool caret_visible_ = false; - int caret_position_ = 0; -#ifdef CRU_DEBUG - bool caret_timer_set_ = false; -#endif - unsigned long caret_timer_tag_; - // this is used for blinking of caret - bool caret_show_ = true; - - // nullopt means not selecting - std::optional<MouseButton> select_down_button_; - - // before the char - int select_start_position_; -}; -} // namespace cru::ui::controls |