diff --git a/modules/juce_gui_basics/components/juce_Component.h b/modules/juce_gui_basics/components/juce_Component.h index 4726821a22..53ef3c7875 100644 --- a/modules/juce_gui_basics/components/juce_Component.h +++ b/modules/juce_gui_basics/components/juce_Component.h @@ -2415,10 +2415,16 @@ public: By default this is set to true. - @see getAccessibilityHandler + @see isAccessible, getAccessibilityHandler */ void setAccessible (bool shouldBeAccessible); + /** Returns true if this component and its children are visible to accessibility clients. + + @see setAccessible + */ + bool isAccessible() const noexcept; + /** Returns the accessibility handler for this component, or nullptr if this component is not accessible. @@ -2570,8 +2576,6 @@ private: bool reallyContainsInternal (Point, bool); Component* getComponentAtInternal (Point); - bool isAccessible() const noexcept; - struct ComponentHelpers; friend struct ComponentHelpers; diff --git a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp index e5053a07dc..2bbf62615b 100644 --- a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp +++ b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp @@ -330,6 +330,17 @@ struct MenuWindow : public Component } else { + const auto shouldDisableAccessibility = [this] + { + const auto* compToCheck = parent != nullptr ? parent + : options.getTargetComponent(); + + return compToCheck != nullptr && ! compToCheck->isAccessible(); + }(); + + if (shouldDisableAccessibility) + setAccessible (false); + addToDesktop (ComponentPeer::windowIsTemporary | ComponentPeer::windowIgnoresKeyPresses | lf.getMenuWindowFlags());