29AccessibilityHandler* AccessibilityHandler::currentlyFocusedHandler =
nullptr;
41void notifyAccessibilityEventInternal (
const AccessibilityHandler&, InternalAccessibilityEvent);
45 #if defined (JucePlugin_Name)
46 return JucePlugin_Name;
49 return app->getApplicationName();
51 return "JUCE Application";
61 role (accessibilityRole),
77 if (
component.isCurrentlyBlockedByAnotherModalComponent()
83 return hasFocus (
false) ? state.withFocused() : state;
93 if (
auto* peer =
comp.getPeer())
94 return ! peer->getAreaCoveredBy (
comp).getIntersection (peer->getComponent().getLocalBounds()).isEmpty();
101 if (
auto*
parent =
comp->getParentComponent())
103 if (
comp->getBoundsInParent().getIntersection (
parent->getLocalBounds()).isEmpty())
149 if (
auto*
handler =
comp->getAccessibilityHandler())
162 &&
handler->getParent() !=
nullptr)
172 if (! handlers.empty())
174 const auto iter = std::find_if (handlers.cbegin(), handlers.cend(),
177 if (iter != handlers.cend())
198 if (
auto* focusContainer =
component.findFocusContainer())
209 const auto addChildComponentHandler = [
this] (
Component* focusableComponent,
210 std::vector<AccessibilityHandler*>& childHandlers)
212 if (focusableComponent ==
nullptr)
221 if (std::find (childHandlers.cbegin(), childHandlers.cend(), unignored) == childHandlers.cend())
222 childHandlers.push_back (unignored);
226 std::vector<AccessibilityHandler*> children;
228 if (
auto traverser =
component.createFocusTraverser())
230 addChildComponentHandler (traverser->getDefaultComponent (&
component), children);
232 for (
auto* focusableChild : traverser->getAllComponents (&
component))
233 addChildComponentHandler (focusableChild, children);
241 while (possibleChild !=
nullptr)
243 possibleChild = possibleChild->getParent();
245 if (possibleChild ==
this)
300 if (
auto traverser =
component.createFocusTraverser())
302 if (
auto* defaultComp = traverser->getDefaultComponent (&
component))
308 handler->grabFocusInternal (
false);
317 parent->grabFocusInternal (
true);
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_AccessibilityActions.h:73
Definition juce_AccessibilityCellInterface.h:37
Definition juce_AccessibilityHandler.h:41
virtual AccessibleState getCurrentState() const
Definition juce_AccessibilityHandler.cpp:75
void giveAwayFocusInternal() const
Definition juce_AccessibilityHandler.cpp:320
virtual ~AccessibilityHandler()
Definition juce_AccessibilityHandler.cpp:68
std::vector< AccessibilityHandler * > getChildren() const
Definition juce_AccessibilityHandler.cpp:204
void grabFocus()
Definition juce_AccessibilityHandler.cpp:277
const AccessibilityActions & getActions() const noexcept
Definition juce_AccessibilityHandler.cpp:119
AccessibilityActions actions
Definition juce_AccessibilityHandler.h:311
AccessibilityCellInterface * getCellInterface() const
Definition juce_AccessibilityHandler.cpp:134
AccessibilityHandler * getChildAt(Point< int > screenPoint)
Definition juce_AccessibilityHandler.cpp:252
bool isIgnored() const
Definition juce_AccessibilityHandler.cpp:86
AccessibilityHandler * getChildFocus()
Definition juce_AccessibilityHandler.cpp:264
void grabFocusInternal(bool)
Definition juce_AccessibilityHandler.cpp:289
std::type_index typeIndex
Definition juce_AccessibilityHandler.h:308
std::unique_ptr< AccessibilityNativeImpl > nativeImpl
Definition juce_AccessibilityHandler.h:317
bool hasFocus(bool trueIfChildFocused) const
Definition juce_AccessibilityHandler.cpp:270
void giveAwayFocus() const
Definition juce_AccessibilityHandler.cpp:283
static std::unique_ptr< AccessibilityNativeImpl > createNativeImpl(AccessibilityHandler &)
Definition juce_gui_basics.cpp:337
AccessibilityTableInterface * getTableInterface() const
Definition juce_AccessibilityHandler.cpp:129
Component & component
Definition juce_AccessibilityHandler.h:307
AccessibilityHandler * getParent() const
Definition juce_AccessibilityHandler.cpp:196
Interfaces interfaces
Definition juce_AccessibilityHandler.h:313
void takeFocus()
Definition juce_AccessibilityHandler.cpp:326
static AccessibilityHandler * currentlyFocusedHandler
Definition juce_AccessibilityHandler.h:304
AccessibilityValueInterface * getValueInterface() const
Definition juce_AccessibilityHandler.cpp:124
bool isVisibleWithinParent() const
Definition juce_AccessibilityHandler.cpp:112
AccessibilityTextInterface * getTextInterface() const
Definition juce_AccessibilityHandler.cpp:139
const AccessibilityRole role
Definition juce_AccessibilityHandler.h:310
AccessibilityHandler(Component &componentToWrap, AccessibilityRole accessibilityRole, AccessibilityActions actions={}, Interfaces interfaces={})
Definition juce_AccessibilityHandler.cpp:55
bool isParentOf(const AccessibilityHandler *possibleChild) const noexcept
Definition juce_AccessibilityHandler.cpp:239
Definition juce_AccessibilityTableInterface.h:37
Definition juce_AccessibilityTextInterface.h:39
Definition juce_AccessibilityValueInterface.h:46
Definition juce_AccessibilityState.h:39
JUCE_NODISCARD AccessibleState withFocusable() const noexcept
Definition juce_AccessibilityState.h:83
Definition juce_Component.h:36
static Component *JUCE_CALLTYPE getCurrentlyModalComponent(int index=0) noexcept
Definition juce_Component.cpp:1842
static Desktop &JUCE_CALLTYPE getInstance()
Definition juce_Desktop.cpp:50
static JUCEApplicationBase * getInstance() noexcept
Definition juce_ApplicationBase.h:96
Definition juce_Point.h:42
Definition juce_String.h:53
static uintptr_t parent
Definition pugl.h:1644
static int JUCE_CDECL comp(const void *a, const void *b)
Definition lsp.c:298
Definition carla_juce.cpp:31
static bool isComponentVisibleWithinParent(Component *comp)
Definition juce_AccessibilityHandler.cpp:99
InternalAccessibilityEvent
Definition juce_AccessibilityHandler.cpp:32
@ elementCreated
Definition juce_AccessibilityHandler.cpp:33
@ elementMovedOrResized
Definition juce_AccessibilityHandler.cpp:35
@ windowOpened
Definition juce_AccessibilityHandler.cpp:37
@ elementDestroyed
Definition juce_AccessibilityHandler.cpp:34
@ focusChanged
Definition juce_AccessibilityHandler.cpp:36
@ windowClosed
Definition juce_AccessibilityHandler.cpp:38
void notifyAccessibilityEventInternal(const AccessibilityHandler &, InternalAccessibilityEvent)
Definition juce_gui_basics.cpp:336
static AccessibilityHandler * findFirstUnignoredChild(const std::vector< AccessibilityHandler * > &handlers)
Definition juce_AccessibilityHandler.cpp:170
static AccessibilityHandler * findEnclosingHandler(Component *comp)
Definition juce_AccessibilityHandler.cpp:145
String getAccessibleApplicationOrPluginName()
Definition juce_AccessibilityHandler.cpp:43
static AccessibilityHandler * getUnignoredAncestor(AccessibilityHandler *handler)
Definition juce_AccessibilityHandler.cpp:158
static bool isComponentVisibleWithinWindow(const Component &comp)
Definition juce_AccessibilityHandler.cpp:91
static AccessibilityHandler * getFirstUnignoredDescendant(AccessibilityHandler *handler)
Definition juce_AccessibilityHandler.cpp:188
AccessibilityRole
Definition juce_AccessibilityRole.h:37
@ ignored
Definition juce_AccessibilityRole.h:67
Definition juce_Uuid.h:141
Definition juce_AccessibilityHandler.h:49
void handler(int signal)
Definition fileio.c:1632
#define const
Definition zconf.h:137