From a7f33da90015d6a88d2e0f30629849d47cc43004 Mon Sep 17 00:00:00 2001 From: ed Date: Tue, 8 Jun 2021 17:56:43 +0100 Subject: [PATCH] Accessibility: Set caret position when passed an empty range selection in CodeEditorComponent and TextEditor AccessibilityTextInterface implementations --- modules/juce_gui_basics/widgets/juce_TextEditor.cpp | 9 ++++++++- .../code_editor/juce_CodeEditorComponent.cpp | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp index fbae68c90c..7317805fb4 100644 --- a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp +++ b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp @@ -2718,7 +2718,14 @@ private: int getTotalNumCharacters() const override { return textEditor.getText().length(); } Range getSelection() const override { return textEditor.getHighlightedRegion(); } - void setSelection (Range r) override { textEditor.setHighlightedRegion (r); } + + void setSelection (Range r) override + { + if (r.isEmpty()) + textEditor.setCaretPosition (r.getStart()); + else + textEditor.setHighlightedRegion (r); + } String getText (Range r) const override { diff --git a/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp b/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp index 30199fbca8..de0159e1c3 100644 --- a/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp +++ b/modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp @@ -71,6 +71,12 @@ private: void setSelection (Range r) override { + if (r.isEmpty()) + { + codeEditorComponent.caretPos.setPosition (r.getStart()); + return; + } + auto& doc = codeEditorComponent.document; codeEditorComponent.selectRegion (CodeDocument::Position (doc, r.getStart()),