From 19186743096ca138b40352e9fc9f531c97b2f359 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 6 Jul 2018 18:47:33 +0200 Subject: macOS: Organize QNSView accessibility code like the rest of the class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drive-by style-fixes were applied as well. Change-Id: I22c17925be41eeaac692ab776dd5b46791265cb3 Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/cocoa.pro | 1 - src/plugins/platforms/cocoa/qnsview.mm | 3 + .../platforms/cocoa/qnsview_accessibility.mm | 90 +++++++++++++++++++++ .../platforms/cocoa/qnsviewaccessibility.mm | 91 ---------------------- 4 files changed, 93 insertions(+), 92 deletions(-) create mode 100644 src/plugins/platforms/cocoa/qnsview_accessibility.mm delete mode 100644 src/plugins/platforms/cocoa/qnsviewaccessibility.mm (limited to 'src/plugins/platforms/cocoa') diff --git a/src/plugins/platforms/cocoa/cocoa.pro b/src/plugins/platforms/cocoa/cocoa.pro index 95a26a433c..9f76b3f1e9 100644 --- a/src/plugins/platforms/cocoa/cocoa.pro +++ b/src/plugins/platforms/cocoa/cocoa.pro @@ -8,7 +8,6 @@ SOURCES += main.mm \ qcocoawindow.mm \ qnsview.mm \ qnswindow.mm \ - qnsviewaccessibility.mm \ qnswindowdelegate.mm \ qcocoanativeinterface.mm \ qcocoaeventdispatcher.mm \ diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 92254a4952..2cbfd7a406 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -363,6 +363,9 @@ #include "qnsview_keys.mm" #include "qnsview_complextext.mm" #include "qnsview_menus.mm" +#ifndef QT_NO_ACCESSIBILITY +#include "qnsview_accessibility.mm" +#endif // ----------------------------------------------------- diff --git a/src/plugins/platforms/cocoa/qnsview_accessibility.mm b/src/plugins/platforms/cocoa/qnsview_accessibility.mm new file mode 100644 index 0000000000..32ec0b74d4 --- /dev/null +++ b/src/plugins/platforms/cocoa/qnsview_accessibility.mm @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// This file is included from qnsview.mm, and only used to organize the code + +#include "qcocoaaccessibility.h" +#include "qcocoaaccessibilityelement.h" +#include "qcocoaintegration.h" + +#include + +#import + +@implementation QT_MANGLE_NAMESPACE(QNSView) (Accessibility) + +- (id)childAccessibleElement +{ + QCocoaWindow *platformWindow = self.platformWindow; + if (!platformWindow || !platformWindow->window()->accessibleRoot()) + return nil; + + QAccessible::Id childId = QAccessible::uniqueId(platformWindow->window()->accessibleRoot()); + return [QMacAccessibilityElement elementWithId:childId]; +} + +// The QNSView is a container that the user does not interact directly with: +// Remove it from the user-visible accessibility tree. +- (BOOL)accessibilityIsIgnored +{ + return YES; +} + +- (id)accessibilityAttributeValue:(NSString *)attribute +{ + // activate accessibility updates + QCocoaIntegration::instance()->accessibility()->setActive(true); + + if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) + return NSAccessibilityUnignoredChildrenForOnlyChild([self childAccessibleElement]); + else + return [super accessibilityAttributeValue:attribute]; +} + +- (id)accessibilityHitTest:(NSPoint)point +{ + return [[self childAccessibleElement] accessibilityHitTest:point]; +} + +- (id)accessibilityFocusedUIElement +{ + return [[self childAccessibleElement] accessibilityFocusedUIElement]; +} + +@end diff --git a/src/plugins/platforms/cocoa/qnsviewaccessibility.mm b/src/plugins/platforms/cocoa/qnsviewaccessibility.mm deleted file mode 100644 index ab0036e175..0000000000 --- a/src/plugins/platforms/cocoa/qnsviewaccessibility.mm +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qnsview.h" -#include "qcocoahelpers.h" -#include "qcocoaaccessibility.h" -#include "qcocoaaccessibilityelement.h" -#include "qcocoaintegration.h" - -#include -#include - -#import - -#ifndef QT_NO_ACCESSIBILITY - -@implementation QNSView (QNSViewAccessibility) - -- (id)childAccessibleElement { - QCocoaWindow *platformWindow = self.platformWindow; - if (!platformWindow || !platformWindow->window()->accessibleRoot()) - return nil; - - QAccessible::Id childId = QAccessible::uniqueId(platformWindow->window()->accessibleRoot()); - return [QMacAccessibilityElement elementWithId:childId]; -} - -// The QNSView is a container that the user does not interact directly with: -// Remove it from the user-visible accessibility tree. -- (BOOL)accessibilityIsIgnored { - return YES; -} - -- (id)accessibilityAttributeValue:(NSString *)attribute { - // activate accessibility updates - QCocoaIntegration::instance()->accessibility()->setActive(true); - - if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) { - return NSAccessibilityUnignoredChildrenForOnlyChild([self childAccessibleElement]); - } else { - return [super accessibilityAttributeValue:attribute]; - } -} - -- (id)accessibilityHitTest:(NSPoint)point { - return [[self childAccessibleElement] accessibilityHitTest: point]; -} - -- (id)accessibilityFocusedUIElement { - return [[self childAccessibleElement] accessibilityFocusedUIElement]; -} - -@end - -#endif // QT_NO_ACCESSIBILITY -- cgit v1.2.3