summaryrefslogtreecommitdiffstats
path: root/src/core/browser_accessibility_qt.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-07-16 15:41:20 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-07-24 14:33:42 +0200
commitb8dee3b91412289470ed6bd62d5d3a3b27157f92 (patch)
tree36e492d5485fae63c08d22f4336d281e17595d23 /src/core/browser_accessibility_qt.cpp
parent0243b5b62912724ed20d4825a54c58ca1b41be19 (diff)
Implement QAccessibleActionInterface
For now only setting the focus via accessibility APIs is supported. Being able to do that is important since screen readers allow exploring the application in different ways and expect to be able to set the focus according to what they present to the user. Change-Id: I4ce17039307844a77c0274d743f5afbe049e3c66 Reviewed-by: Michael Bruning <michael.bruning@digia.com>
Diffstat (limited to 'src/core/browser_accessibility_qt.cpp')
-rw-r--r--src/core/browser_accessibility_qt.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp
index 106a71d4c..f71a50610 100644
--- a/src/core/browser_accessibility_qt.cpp
+++ b/src/core/browser_accessibility_qt.cpp
@@ -80,6 +80,10 @@ QAccessibleInterface *BrowserAccessibilityQt::childAt(int x, int y) const
void *BrowserAccessibilityQt::interface_cast(QAccessible::InterfaceType type)
{
switch (type) {
+ case QAccessible::ActionInterface:
+ if (!actionNames().isEmpty())
+ return static_cast<QAccessibleActionInterface*>(this);
+ break;
case QAccessible::TextInterface:
if (IsEditableText())
return static_cast<QAccessibleTextInterface*>(this);
@@ -436,6 +440,26 @@ void BrowserAccessibilityQt::NativeReleaseReference()
QAccessible::deleteAccessibleInterface(interfaceId);
}
+QStringList BrowserAccessibilityQt::actionNames() const
+{
+ QStringList actions;
+ if (HasState(blink::WebAXStateFocusable))
+ actions << QAccessibleActionInterface::setFocusAction();
+ return actions;
+}
+
+void BrowserAccessibilityQt::doAction(const QString &actionName)
+{
+ if (actionName == QAccessibleActionInterface::setFocusAction())
+ manager()->SetFocus(this, true);
+}
+
+QStringList BrowserAccessibilityQt::keyBindingsForAction(const QString &actionName) const
+{
+ QT_NOT_YET_IMPLEMENTED
+ return QStringList();
+}
+
void BrowserAccessibilityQt::addSelection(int startOffset, int endOffset)
{
manager()->SetTextSelection(*this, startOffset, endOffset);