From 82a45e611a2638cff7e3fffc09ba4569ca53a274 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 21 Sep 2018 22:53:12 +0800 Subject: Add selectable switch in text block. --- CruUI/ui/controls/text_block.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'CruUI/ui/controls/text_block.cpp') diff --git a/CruUI/ui/controls/text_block.cpp b/CruUI/ui/controls/text_block.cpp index 5fabb3f4..45f0d574 100644 --- a/CruUI/ui/controls/text_block.cpp +++ b/CruUI/ui/controls/text_block.cpp @@ -65,6 +65,26 @@ namespace cru text_layout_handlers_.erase(find_result); } + void TextBlock::SetSelectable(const bool is_selectable) + { + if (!is_selectable) + { + is_selecting_ = false; + selected_range_ = std::nullopt; + Repaint(); + } + is_selectable_ = is_selectable; + } + + void TextBlock::SetSelectedRange(std::optional text_range) + { + if (is_selectable_) + { + selected_range_ = text_range; + Repaint(); + } + } + void TextBlock::OnSizeChangedCore(events::SizeChangedEventArgs& args) { Control::OnSizeChangedCore(args); @@ -117,7 +137,7 @@ namespace cru void TextBlock::OnMouseDownCore(events::MouseButtonEventArgs& args) { Control::OnMouseDownCore(args); - if (args.GetMouseButton() == MouseButton::Left) + if (is_selectable_ && args.GetMouseButton() == MouseButton::Left) { RequestFocus(); selected_range_ = std::nullopt; -- cgit v1.2.3