11#include <QtGui/qaccessible.h>
13#include <AppKit/NSAccessibility.h>
15@implementation QNSView (Accessibility)
17- (
void)activateQtAccessibility
23 QCocoaIntegration::instance()->accessibility()->setActive(
true);
26- (
id)childAccessibleElement
28 QCocoaWindow *platformWindow = self.platformWindow;
29 if (!platformWindow || !platformWindow->window()->accessibleRoot())
32 QAccessible::Id childId = QAccessible::uniqueId(platformWindow->window()->accessibleRoot());
33 return [QMacAccessibilityElement elementWithId:childId];
38- (BOOL)accessibilityIsIgnored
43- (
id)accessibilityAttributeValue:(NSString *)attribute
45 [self activateQtAccessibility];
47 if ([attribute isEqualToString:NSAccessibilityChildrenAttribute])
48 return NSAccessibilityUnignoredChildrenForOnlyChild([self childAccessibleElement]);
50 return [super accessibilityAttributeValue:attribute];
53- (
id)accessibilityParent
55 [self activateQtAccessibility];
62 auto parentAccessibleElement = [self]() -> id {
63 QCocoaWindow *platformWindow = self.platformWindow;
67 QAccessibleInterface *root = platformWindow->window()->accessibleRoot();
71 QAccessibleInterface *parent = root->parent();
75 if (QCocoaAccessible::isRepresentedByAppKit(parent))
78 return [QMacAccessibilityElement elementWithInterface:parent];
81 if (id element = parentAccessibleElement())
82 return NSAccessibilityUnignoredAncestor(element);
84 return [super accessibilityParent];
87- (
id)accessibilityHitTest:(NSPoint)point
89 [self activateQtAccessibility];
90 return [[self childAccessibleElement] accessibilityHitTest:point];
93- (
id)accessibilityFocusedUIElement
95 [self activateQtAccessibility];
96 return [[self childAccessibleElement] accessibilityFocusedUIElement];