diff options
author | Frederik Gladhorn <frederik.gladhorn@nokia.com> | 2012-03-07 13:51:31 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-12 13:14:05 +0100 |
commit | eb57da5b3ff9915d2254fdbf57992fa0320d9041 (patch) | |
tree | 47c862ddba23eaa4790eb2f7e8d10e1c5299da11 /src | |
parent | 0ecec0e903f80c8657f323a51973b81cdeebcac1 (diff) |
Update accessibility StateChange by custom event.
Subclass QAccessibleEvent to give details what changed in the
state change.
Change-Id: I9005d311e85a3c8bfa6e062833fa6a8a7dc6a4a4
Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/accessible/qaccessible.cpp | 3 | ||||
-rw-r--r-- | src/gui/accessible/qaccessible.h | 15 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 14 | ||||
-rw-r--r-- | src/widgets/widgets/qabstractbutton.cpp | 10 | ||||
-rw-r--r-- | src/widgets/widgets/qpushbutton.cpp | 4 |
5 files changed, 32 insertions, 14 deletions
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp index a7843ba227..91b0b5fbe6 100644 --- a/src/gui/accessible/qaccessible.cpp +++ b/src/gui/accessible/qaccessible.cpp @@ -257,7 +257,8 @@ QT_BEGIN_NAMESPACE \value SelectionWithin Several changes to a selection has occurred in an item view. \value SoundPlayed A sound has been played by an object - \value StateChanged The QAccessible::State of an object has changed. + \omitvalue StateChanged The QAccessible::State of an object has changed. + This value is used internally for the QAccessibleStateChangeEvent. \value TableCaptionChanged A table caption has been changed. \value TableColumnDescriptionChanged The description of a table column, typically found in the column's header, has been changed. diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h index 8c962ffb53..e8a5cf8bad 100644 --- a/src/gui/accessible/qaccessible.h +++ b/src/gui/accessible/qaccessible.h @@ -452,6 +452,21 @@ private: int m_child; }; +class Q_GUI_EXPORT QAccessibleStateChangeEvent :public QAccessibleEvent +{ +public: + inline QAccessibleStateChangeEvent(QAccessible::State state, QObject *obj, int chld = -1) + : QAccessibleEvent(QAccessible::StateChanged, obj, chld), m_changedStates(state) + {} + + QAccessible::State changedStates() const { + return m_changedStates; + } + +private: + QAccessible::State m_changedStates; +}; + #define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface" Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid) diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 03ada1ac7a..1493f61972 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -8245,12 +8245,15 @@ bool QWidget::event(QEvent *event) void QWidget::changeEvent(QEvent * event) { switch(event->type()) { - case QEvent::EnabledChange: + case QEvent::EnabledChange: { update(); #ifndef QT_NO_ACCESSIBILITY - QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::StateChanged, this, 0)); + QAccessible::State s; + s.disabled = true; + QAccessible::updateAccessibility(QAccessibleStateChangeEvent(s, this)); #endif break; + } case QEvent::FontChange: case QEvent::StyleChange: { @@ -10515,13 +10518,6 @@ void QWidget::updateMicroFocus() { // updating everything since this is currently called for any kind of state change qApp->inputMethod()->update(Qt::ImQueryAll); - -#ifndef QT_NO_ACCESSIBILITY - if (isVisible()) { - // ##### is this correct - QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::StateChanged, this, 0)); - } -#endif } /*! diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp index f7c8ad7773..aebef8ddc9 100644 --- a/src/widgets/widgets/qabstractbutton.cpp +++ b/src/widgets/widgets/qabstractbutton.cpp @@ -504,9 +504,6 @@ void QAbstractButtonPrivate::refresh() if (blockRefresh) return; q->update(); -#ifndef QT_NO_ACCESSIBILITY - QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::StateChanged, q, 0)); -#endif } void QAbstractButtonPrivate::click() @@ -767,6 +764,13 @@ void QAbstractButton::setChecked(bool checked) d->notifyChecked(); if (guard) emit toggled(checked); + + +#ifndef QT_NO_ACCESSIBILITY + QAccessible::State s; + s.checked = true; + QAccessible::updateAccessibility(QAccessibleStateChangeEvent(s, this)); +#endif } bool QAbstractButton::isChecked() const diff --git a/src/widgets/widgets/qpushbutton.cpp b/src/widgets/widgets/qpushbutton.cpp index 7ca5dcb486..059b0f801c 100644 --- a/src/widgets/widgets/qpushbutton.cpp +++ b/src/widgets/widgets/qpushbutton.cpp @@ -376,7 +376,9 @@ void QPushButton::setDefault(bool enable) } update(); #ifndef QT_NO_ACCESSIBILITY - QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::StateChanged, this, 0)); + QAccessible::State s; + s.defaultButton = true; + QAccessible::updateAccessibility(QAccessibleStateChangeEvent(s, this)); #endif } |