diff --git a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp index f04a84469b..d1e4a640ce 100644 --- a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp +++ b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp @@ -2036,7 +2036,13 @@ bool TextEditor::moveCaretUp (bool selecting) return moveCaretToStartOfLine (selecting); const auto caretPos = (getCaretRectangle() - getTextOffset()).toFloat(); - return moveCaretWithTransaction (indexAtPosition (caretPos.getX(), caretPos.getY() - 1.0f), selecting); + + const auto newY = caretPos.getY() - 1.0f; + + if (newY < 0.0f) + return moveCaretToStartOfLine (selecting); + + return moveCaretWithTransaction (indexAtPosition (caretPos.getX(), newY), selecting); } bool TextEditor::moveCaretDown (bool selecting)