diff options
Diffstat (limited to 'CruUI/ui/controls')
-rw-r--r-- | CruUI/ui/controls/text_block.cpp | 22 | ||||
-rw-r--r-- | CruUI/ui/controls/text_block.h | 9 |
2 files changed, 28 insertions, 3 deletions
diff --git a/CruUI/ui/controls/text_block.cpp b/CruUI/ui/controls/text_block.cpp index 132bd3e7..04166f32 100644 --- a/CruUI/ui/controls/text_block.cpp +++ b/CruUI/ui/controls/text_block.cpp @@ -25,7 +25,14 @@ namespace cru } TextBlock::TextBlock(const Microsoft::WRL::ComPtr<IDWriteTextFormat>& init_text_format, - const Microsoft::WRL::ComPtr<ID2D1Brush>& init_brush) : Control(false) + const Microsoft::WRL::ComPtr<ID2D1Brush>& init_brush) : Control(false), + window_deactivated_handler_(new events::UiEvent::EventHandler([this](events::UiEvent::ArgsType& args) + { + if (is_selecting_) + { + is_selecting_ = false; + } + })) { text_format_ = init_text_format; if (init_brush == nullptr) @@ -59,6 +66,19 @@ namespace cru Repaint(); } + void TextBlock::OnAttachToWindow(Window* window) + { + window->deactivated_event.AddHandler([](auto args) + { + + }); + } + + void TextBlock::OnDetachToWindow(Window* window) + { + + } + void TextBlock::OnSizeChangedCore(events::SizeChangedEventArgs& args) { text_layout_->SetMaxWidth(args.GetNewSize().width); diff --git a/CruUI/ui/controls/text_block.h b/CruUI/ui/controls/text_block.h index c817104e..4c1f1fb1 100644 --- a/CruUI/ui/controls/text_block.h +++ b/CruUI/ui/controls/text_block.h @@ -27,9 +27,9 @@ namespace cru unsigned position; unsigned count; - operator DWRITE_TEXT_RANGE() const + explicit operator DWRITE_TEXT_RANGE() const { - DWRITE_TEXT_RANGE result; + DWRITE_TEXT_RANGE result{}; result.startPosition = position; result.length = count; return result; @@ -97,6 +97,9 @@ namespace cru } protected: + void OnAttachToWindow(Window* window) override; + void OnDetachToWindow(Window* window) override; + void OnSizeChangedCore(events::SizeChangedEventArgs& args) override final; void OnDraw(ID2D1DeviceContext* device_context) override; @@ -130,6 +133,8 @@ namespace cru std::optional<TextRange> selected_range_ = std::nullopt; bool is_selecting_ = false; + + events::UiEvent::EventHandlerPtr window_deactivated_handler_; }; } } |