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; }