diff options
author | Frederik Gladhorn <frederik.gladhorn@nokia.com> | 2012-01-30 18:52:46 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-19 18:07:30 +0100 |
commit | 477c43260eea8461dff1e0e8acb4b61a1600518a (patch) | |
tree | 907dec508393ebae879b766bfeba34ee7fb3012d /src/testlib/qtestaccessible.h | |
parent | 478658fd41dba6c0d94edfbe31086dc3cabff533 (diff) |
Accessibility: add text update events
Change-Id: Iece9d100b3f5a379d7d8e29dea67a10d0c918c06
Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'src/testlib/qtestaccessible.h')
-rw-r--r-- | src/testlib/qtestaccessible.h | 74 |
1 files changed, 68 insertions, 6 deletions
diff --git a/src/testlib/qtestaccessible.h b/src/testlib/qtestaccessible.h index 6d8d6125c1..fa2718b1b7 100644 --- a/src/testlib/qtestaccessible.h +++ b/src/testlib/qtestaccessible.h @@ -68,14 +68,51 @@ typedef QList<QAccessibleEvent*> EventList; bool operator==(const QAccessibleEvent &l, const QAccessibleEvent &r) { - if (l.type() != r.type() || - l.object() != r.object() || - l.child() != r.child()) + if (l.type() != r.type()) { +// qDebug() << "QAccessibleEvent with wrong type: " << qAccessibleEventString(l.type()) << " and " << qAccessibleEventString(r.type()); return false; + } + if (l.object() != r.object() || + l.child() != r.child()) { +// qDebug() << "QAccessibleEvent for wrong object: " << l.object() << " and " << r.object() << " child: " << l.child() << " and " << r.child(); + return false; + } if (l.type() == QAccessible::StateChanged) { return static_cast<const QAccessibleStateChangeEvent*>(&l)->changedStates() == static_cast<const QAccessibleStateChangeEvent*>(&r)->changedStates(); + } else if (l.type() == QAccessible::TextCaretMoved) { + return static_cast<const QAccessibleTextCursorEvent*>(&l)->cursorPosition() + == static_cast<const QAccessibleTextCursorEvent*>(&r)->cursorPosition(); + } else if (l.type() == QAccessible::TextSelectionChanged) { + const QAccessibleTextSelectionEvent *le = static_cast<const QAccessibleTextSelectionEvent*>(&l); + const QAccessibleTextSelectionEvent *re = static_cast<const QAccessibleTextSelectionEvent*>(&r); + return le->cursorPosition() == re->cursorPosition() && + le->selectionStart() == re->selectionStart() && + le->selectionEnd() == re->selectionEnd(); + } else if (l.type() == QAccessible::TextInserted) { + const QAccessibleTextInsertEvent *le = static_cast<const QAccessibleTextInsertEvent*>(&l); + const QAccessibleTextInsertEvent *re = static_cast<const QAccessibleTextInsertEvent*>(&r); + return le->cursorPosition() == re->cursorPosition() && + le->changePosition() == re->changePosition() && + le->textInserted() == re->textInserted(); + } else if (l.type() == QAccessible::TextRemoved) { + const QAccessibleTextRemoveEvent *le = static_cast<const QAccessibleTextRemoveEvent*>(&l); + const QAccessibleTextRemoveEvent *re = static_cast<const QAccessibleTextRemoveEvent*>(&r); + return le->cursorPosition() == re->cursorPosition() && + le->changePosition() == re->changePosition() && + le->textRemoved() == re->textRemoved(); + } else if (l.type() == QAccessible::TextUpdated) { + const QAccessibleTextUpdateEvent *le = static_cast<const QAccessibleTextUpdateEvent*>(&l); + const QAccessibleTextUpdateEvent *re = static_cast<const QAccessibleTextUpdateEvent*>(&r); + return le->cursorPosition() == re->cursorPosition() && + le->changePosition() == re->changePosition() && + le->textInserted() == re->textInserted() && + le->textRemoved() == re->textRemoved(); + } else if (l.type() == QAccessible::ValueChanged) { + const QAccessibleValueChangeEvent *le = static_cast<const QAccessibleValueChangeEvent*>(&l); + const QAccessibleValueChangeEvent *re = static_cast<const QAccessibleValueChangeEvent*>(&r); + return le->value() == re->value(); } return true; } @@ -108,7 +145,7 @@ public: return res; } static bool containsEvent(QAccessibleEvent *event) { - Q_FOREACH (QAccessibleEvent *ev, eventList()) { + Q_FOREACH (const QAccessibleEvent *ev, eventList()) { if (*ev == *event) return true; } @@ -146,9 +183,34 @@ private: } static QAccessibleEvent *copyEvent(QAccessibleEvent *event) { - if (event->type() == QAccessible::StateChanged) - return new QAccessibleStateChangeEvent(static_cast<const QAccessibleStateChangeEvent*>(event)->changedStates(), + if (event->type() == QAccessible::StateChanged) { + return new QAccessibleStateChangeEvent(static_cast<QAccessibleStateChangeEvent*>(event)->changedStates(), event->object(), event->child()); + } else if (event->type() == QAccessible::TextCaretMoved) { + return new QAccessibleTextCursorEvent(static_cast<QAccessibleTextCursorEvent*>(event)->cursorPosition(), event->object(), event->child()); + } else if (event->type() == QAccessible::TextSelectionChanged) { + const QAccessibleTextSelectionEvent *original = static_cast<QAccessibleTextSelectionEvent*>(event); + QAccessibleTextSelectionEvent *ev = new QAccessibleTextSelectionEvent(original->selectionStart(), original->selectionEnd(), event->object(), event->child()); + ev->setCursorPosition(original->cursorPosition()); + return ev; + } else if (event->type() == QAccessible::TextInserted) { + const QAccessibleTextInsertEvent *original = static_cast<QAccessibleTextInsertEvent*>(event); + QAccessibleTextInsertEvent *ev = new QAccessibleTextInsertEvent(original->changePosition(), original->textInserted(), event->object(), event->child()); + ev->setCursorPosition(original->cursorPosition()); + return ev; + } else if (event->type() == QAccessible::TextRemoved) { + const QAccessibleTextRemoveEvent *original = static_cast<QAccessibleTextRemoveEvent*>(event); + QAccessibleTextRemoveEvent *ev = new QAccessibleTextRemoveEvent(original->changePosition(), original->textRemoved(), event->object(), event->child()); + ev->setCursorPosition(original->cursorPosition()); + return ev; + } else if (event->type() == QAccessible::TextUpdated) { + const QAccessibleTextUpdateEvent *original = static_cast<QAccessibleTextUpdateEvent*>(event); + QAccessibleTextUpdateEvent *ev = new QAccessibleTextUpdateEvent(original->changePosition(), original->textRemoved(), original->textInserted(), event->object(), event->child()); + ev->setCursorPosition(original->cursorPosition()); + return ev; + } else if (event->type() == QAccessible::ValueChanged) { + return new QAccessibleValueChangeEvent(static_cast<QAccessibleValueChangeEvent*>(event)->value(), event->object(), event->child()); + } return new QAccessibleEvent(event->type(), event->object(), event->child()); } |