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

View File

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

View File

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

View File

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