From 17e35c8ebb51c2679421330056615fa8678b939e Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 16 Nov 2021 22:27:03 +0800 Subject: ... --- src/ui/controls/TextHostControlService.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/ui/controls/TextHostControlService.cpp') diff --git a/src/ui/controls/TextHostControlService.cpp b/src/ui/controls/TextHostControlService.cpp index 3fb10a95..740fa447 100644 --- a/src/ui/controls/TextHostControlService.cpp +++ b/src/ui/controls/TextHostControlService.cpp @@ -150,6 +150,18 @@ void TextHostControlService::SetEditable(bool editable) { if (!editable) CancelComposition(); } +void TextHostControlService::SetMultiLine(bool multi_line) { + this->multi_line_ = multi_line; + + if (!multi_line) { + auto text = GetText(); + for (auto& c : text) { + if (c == u'\n') c = u' '; + } + SetText(text); + } +} + void TextHostControlService::SetText(String text, bool stop_composition) { this->text_ = std::move(text); CoerceSelection(); @@ -433,8 +445,12 @@ void TextHostControlService::GainFocusHandler( input_method_context_event_guard_ += input_method_context->CompositionEndEvent()->AddHandler(sync); input_method_context_event_guard_ += - input_method_context->TextEvent()->AddHandler( - [this](StringView text) { this->ReplaceSelectedText(text); }); + input_method_context->TextEvent()->AddHandler([this](StringView text) { + if (!multi_line_ && text == u"\n") { + return; + } + this->ReplaceSelectedText(text); + }); host::WindowHost* window_host = control_->GetWindowHost(); if (window_host) -- cgit v1.2.3