From 2b3abd3ca63a9ac387075efbc27f6a51de0fe2fc Mon Sep 17 00:00:00 2001 From: attila Date: Mon, 6 Dec 2021 23:44:35 +0100 Subject: [PATCH] MacOS: Fix TextEditor when using marked text (e.g. Korean) --- .../native/juce_mac_NSViewComponentPeer.mm | 9 +++++++++ modules/juce_gui_basics/widgets/juce_TextEditor.cpp | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm index edff4142f6..eff91d8363 100644 --- a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm +++ b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm @@ -1531,6 +1531,15 @@ public: void textInputRequired (Point, TextInputTarget&) override {} + void dismissPendingTextInput() override + { + stringBeingComposed.clear(); + const auto* inputContext = [NSTextInputContext currentInputContext]; + + if (inputContext != nil) + [inputContext discardMarkedText]; + } + void resetWindowPresentation() { if (hasNativeTitleBar()) diff --git a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp index 307f7ee1c2..d5f98c2f90 100644 --- a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp +++ b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp @@ -1836,6 +1836,9 @@ void TextEditor::mouseDown (const MouseEvent& e) { moveCaretTo (getTextIndexAt (e.x, e.y), e.mods.isShiftDown()); + + if (auto* peer = getPeer()) + peer->dismissPendingTextInput(); } else { @@ -1956,6 +1959,10 @@ bool TextEditor::moveCaretWithTransaction (const int newPos, const bool selectin { newTransaction(); moveCaretTo (newPos, selecting); + + if (auto* peer = getPeer()) + peer->dismissPendingTextInput(); + return true; }