Compile with changes to the accessibility API.

Change-Id: I72e7636a02ad2fba984f4a96cbb33d441a7f8be7
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
This commit is contained in:
Morten Johan Sørvig 2013-04-16 13:34:18 +02:00 committed by The Qt Project
parent a7fd8696dd
commit b9450734c9
4 changed files with 17 additions and 32 deletions

View File

@ -62,7 +62,7 @@ void MouseInterceptingGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEv
AccessibilitySceneManager *sceneManager = 0;
QAccessible::UpdateHandler previousUpdateHandler = 0;
bool updateHandlerRecursion = false;
void accessibilityUpdateHandler(QObject *object, int who, QAccessible::Event reason)
void accessibilityUpdateHandler(QAccessibleEvent *event)
{
if (updateHandlerRecursion)
return;
@ -70,13 +70,13 @@ void accessibilityUpdateHandler(QObject *object, int who, QAccessible::Event rea
updateHandlerRecursion = true;
if (sceneManager) {
sceneManager->handleUpdate(object, reason);
sceneManager->handleUpdate(event);
//qDebug() << "update";
}
if (previousUpdateHandler) // call prev just to be sure.
previousUpdateHandler(object, who, reason);
previousUpdateHandler(event);
updateHandlerRecursion = false;
}

View File

@ -73,7 +73,6 @@ void AccessibilitySceneManager::updateAccessibilitySceneItemFlags()
if (!interface)
continue;
updateItemFlags(m_graphicsItems.value(object), interface);
delete interface;
}
}
@ -89,15 +88,18 @@ void AccessibilitySceneManager::populateAccessibilityTreeScene()
populateAccessibilityTreeScene(rootInterface);
}
void AccessibilitySceneManager::handleUpdate(QObject *object, QAccessible::Event reason)
void AccessibilitySceneManager::handleUpdate(QAccessibleEvent *event)
{
QObject *object = event->object();
QAccessible::Event type = event->type();
QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(object);
if (!interface)
return;
QString name = interface->text(QAccessible::Name);
if (reason == QAccessible::ObjectCreated) {
if (type == QAccessible::ObjectCreated) {
// qDebug() << "ObjectCreated" << object << name;
populateAccessibilityScene(interface, m_scene);
}
@ -109,7 +111,7 @@ void AccessibilitySceneManager::handleUpdate(QObject *object, QAccessible::Event
return;
}
if (reason == QAccessible::LocationChanged) {
if (type == QAccessible::LocationChanged) {
//if (name.startsWith("List"))
qDebug() << "locationChange" << object << name << interface->rect();
@ -119,12 +121,10 @@ void AccessibilitySceneManager::handleUpdate(QObject *object, QAccessible::Event
QAccessibleInterface *child = interface->child(i);
if (child) {
updateItem(m_graphicsItems.value(child->object()), child);
delete child;
}
}
delete interface;
} else if (reason == QAccessible::ObjectDestroyed) {
} else if (type == QAccessible::ObjectDestroyed) {
// qDebug() << "ObjectDestroyed" << object << name;
delete m_graphicsItems.value(object);
m_graphicsItems.remove(object);
@ -132,28 +132,25 @@ void AccessibilitySceneManager::handleUpdate(QObject *object, QAccessible::Event
if (object == m_selectedObject) {
m_selectedObject = 0;
}
} else if (reason == QAccessible::ObjectHide) {
} else if (type == QAccessible::ObjectHide) {
// qDebug() << "ObjectCreated Hide" << object;
updateItemFlags(item, interface);
} else if (reason == QAccessible::ObjectShow) {
} else if (type == QAccessible::ObjectShow) {
// qDebug() << "ObjectCreated Show" << object;
updateItemFlags(item, interface);
} else if (reason == QAccessible::ScrollingStart) {
} else if (type == QAccessible::ScrollingStart) {
qDebug() << "ObjectCreated ScrollingStart" << object;
QAccessibleInterface *child = 0;
for (int i = 0; i < interface->childCount(); ++i) {
QAccessibleInterface *child = interface->child(i);
if (child) {
m_animatedObjects.insert(child->object());
delete child;
}
}
} else if (reason == QAccessible::ScrollingEnd) {
} else if (type == QAccessible::ScrollingEnd) {
// qDebug() << "ObjectCreated ScrollingEnd" << object;
foreach (QObject *object, m_animatedObjects) {
updateItem(m_graphicsItems.value(object), interface);
}
delete interface;
m_animatedObjects.clear();
} else {
@ -197,10 +194,7 @@ void AccessibilitySceneManager::updateItems(QObject *root)
for (int i = 0; i < interface->childCount(); ++i) {
QAccessibleInterface *child = interface->child(i);
updateItems(child->object());
delete child;
}
delete interface;
}
void AccessibilitySceneManager::updateItem(QObject *object)
@ -213,8 +207,6 @@ void AccessibilitySceneManager::updateItem(QObject *object)
return;
updateItem(m_graphicsItems.value(object), interface);
delete interface;
}
void AccessibilitySceneManager::updateItem(QGraphicsRectItem *item, QAccessibleInterface *interface)
@ -332,7 +324,6 @@ void AccessibilitySceneManager::populateAccessibilityScene(QAccessibleInterface
QAccessibleInterface *child = interface->child(i);
updateItems(child->object());
populateAccessibilityScene(child, scene);
delete child;
}
}
@ -351,7 +342,6 @@ AccessibilitySceneManager::TreeItem AccessibilitySceneManager::computeLevels(QAc
TreeItem childLevel = computeLevels(child, level + 1);
currentLevel.children.append(childLevel);
currentLevel.width += childLevel.width + m_treeItemHorizontalPadding;
delete child;
}
}
@ -485,11 +475,7 @@ bool AccessibilitySceneManager::isHidden(QAccessibleInterface *interface)
return true;
}
QAccessibleInterface *parent = current->parent();
if (current != interface)
delete current;
current = parent;
current = current->parent();
}
return false;

View File

@ -63,7 +63,7 @@ public slots:
void populateAccessibilityScene();
void updateAccessibilitySceneItemFlags();
void populateAccessibilityTreeScene();
void handleUpdate(QObject *object, QAccessible::Event reason);
void handleUpdate(QAccessibleEvent *event);
void setSelected(QObject *object);
void changeScale(int scale);

View File

@ -42,6 +42,7 @@
#include "screenreader.h"
#include "optionswidget.h"
#include "accessibilityscenemanager.h"
#include <private/qaccessible2_p.h>
#include <QtGui>
ScreenReader::ScreenReader(QObject *parent) :
@ -54,8 +55,6 @@ ScreenReader::ScreenReader(QObject *parent) :
ScreenReader::~ScreenReader()
{
delete m_selectedInterface;
delete m_rootInterface;
}
void ScreenReader::setRootObject(QObject *rootObject)