From e2dab3893a8be43de0e50587c85df9e11abf87fe Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 11 Sep 2018 00:35:57 +0800 Subject: ... --- CruUI/ui/controls/text_block.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (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 60f8a1c1..739cd793 100644 --- a/CruUI/ui/controls/text_block.cpp +++ b/CruUI/ui/controls/text_block.cpp @@ -65,6 +65,22 @@ namespace cru device_context->DrawTextLayout(D2D1::Point2F(), text_layout_.Get(), brush_.Get()); } + void TextBlock::OnMouseDownCore(events::MouseButtonEventArgs& args) + { + if (args.GetMouseButton() == MouseButton::Left) + { + BOOL is_trailing, is_inside; + DWRITE_HIT_TEST_METRICS metrics; + text_layout_->HitTestPoint(args.GetPoint(this).x, args.GetPoint(this).y, &is_trailing, &is_inside, &metrics); + if (is_inside) + { + mouse_down_position_ = is_trailing == 0 ? metrics.textPosition : metrics.textPosition + 1; + is_mouse_down_ = true; + } + } + Control::OnMouseDownCore(args); + } + Size TextBlock::OnMeasure(const Size& available_size) { if (text_.empty()) @@ -75,8 +91,6 @@ namespace cru if (layout_params->width.mode == MeasureMode::Stretch && layout_params->height.mode == MeasureMode::Stretch) return available_size; - Size measure_size; // NOLINT(cppcoreguidelines-pro-type-member-init) - auto&& get_measure_length = [](const MeasureLength& layout_length, const float available_length) -> float { switch (layout_length.mode) @@ -95,8 +109,8 @@ namespace cru } }; - measure_size.width = get_measure_length(layout_params->width, available_size.width); - measure_size.height = get_measure_length(layout_params->height, available_size.height); + const Size measure_size(get_measure_length(layout_params->width, available_size.width), + get_measure_length(layout_params->height, available_size.height)); ThrowIfFailed(text_layout_->SetMaxWidth(measure_size.width)); ThrowIfFailed(text_layout_->SetMaxHeight(measure_size.height)); -- cgit v1.2.3