diff options
author | Morten Sorvig <morten.sorvig@nokia.com> | 2011-10-11 11:04:59 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-19 03:04:40 +0200 |
commit | 946805f07f9f8270d60df58f07bd8836b76d7258 (patch) | |
tree | c9b6901a509d456d0d71784034640f6f1063b32f /src/plugins/platforms/cocoa/qnsview.mm | |
parent | d884f24fe1b86bbd71d62584d5cf1381355efe0d (diff) |
Cocoa: Add initial accessibility implementation.
See qcocoaaccessiblity.h for details.
For now only the first level of the hierarchy is
made accessible.
Also add tools/accessibilityinspector which is an
utility for inspecting and debugging the Qt
accessibility tree.
Change-Id: Iff520bec26b3761feb0c2e00471feb379daaa735
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Diffstat (limited to 'src/plugins/platforms/cocoa/qnsview.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qnsview.mm | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 67bc61c63b..664b87607a 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -48,6 +48,10 @@ #include <QtGui/QWindowSystemInterface> #include <QtCore/QDebug> +#ifdef QT_COCOA_ENABLE_ACCESSIBILITY_INSPECTOR +#include <accessibilityinspector.h> +#endif + @interface NSEvent (Qt_Compile_Leopard_DeviceDelta) - (CGFloat)deviceDeltaX; - (CGFloat)deviceDeltaY; @@ -58,7 +62,7 @@ - (id) init { - self = [super init]; + self = [super initWithFrame : NSMakeRect(0,0, 300,300)]; if (self) { m_cgImage = 0; m_window = 0; @@ -67,11 +71,31 @@ return self; } -- (id)initWithQWindow:(QWindow *)widget { +- (id)initWithQWindow:(QWindow *)window { self = [self init]; - if (self) { - m_window = widget; + if (!self) + return 0; + + m_window = window; + m_accessibleRoot = 0; + +#ifdef QT_COCOA_ENABLE_ACCESSIBILITY_INSPECTOR + // prevent rift in space-time continuum, disable + // accessibility for the accessibility inspector's windows. + static bool skipAccessibilityForInspectorWindows = false; + if (!skipAccessibilityForInspectorWindows) { + + m_accessibleRoot = window->accessibleRoot(); + + AccessibilityInspector *inspector = new AccessibilityInspector(window); + skipAccessibilityForInspectorWindows = true; + inspector->inspectWindow(window); + skipAccessibilityForInspectorWindows = false; } +#else + m_accessibleRoot = window->accessibleRoot(); +#endif + return self; } |