From c9950e380192f512a9e079f05263e0b8cb92184f Mon Sep 17 00:00:00 2001 From: reuk Date: Mon, 30 May 2022 11:47:06 +0100 Subject: [PATCH] Accessibility: Avoid allowing TextEditor and Viewport internal components to be accessibility-focused The TextHolderComponent and Viewport::componentHolder don't have any accessible semantics, so they shouldn't be included in the accessible component hierarchy. --- modules/juce_gui_basics/layout/juce_Viewport.h | 10 +++++++++- modules/juce_gui_basics/widgets/juce_TextEditor.cpp | 11 +++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/modules/juce_gui_basics/layout/juce_Viewport.h b/modules/juce_gui_basics/layout/juce_Viewport.h index 77e6700b7c..244f5b1d7b 100644 --- a/modules/juce_gui_basics/layout/juce_Viewport.h +++ b/modules/juce_gui_basics/layout/juce_Viewport.h @@ -337,8 +337,16 @@ protected: private: //============================================================================== + class AccessibilityIgnoredComponent : public Component + { + std::unique_ptr createAccessibilityHandler() override + { + return createIgnoredAccessibilityHandler (*this); + } + }; + std::unique_ptr verticalScrollBar, horizontalScrollBar; - Component contentHolder; + AccessibilityIgnoredComponent contentHolder; WeakReference contentComp; Rectangle lastVisibleArea; int scrollBarThickness = 0; diff --git a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp index f6e87e2907..23cb31f593 100644 --- a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp +++ b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp @@ -868,6 +868,12 @@ struct TextEditor::TextHolderComponent : public Component, TextEditor& owner; +private: + std::unique_ptr createAccessibilityHandler() override + { + return createIgnoredAccessibilityHandler (*this); + } + JUCE_DECLARE_NON_COPYABLE (TextHolderComponent) }; @@ -894,6 +900,11 @@ struct TextEditor::TextEditorViewport : public Viewport } private: + std::unique_ptr createAccessibilityHandler() override + { + return createIgnoredAccessibilityHandler (*this); + } + TextEditor& owner; int lastWordWrapWidth = 0; bool reentrant = false;