summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2012-03-07 13:51:31 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-12 13:14:05 +0100
commiteb57da5b3ff9915d2254fdbf57992fa0320d9041 (patch)
tree47c862ddba23eaa4790eb2f7e8d10e1c5299da11 /src
parent0ecec0e903f80c8657f323a51973b81cdeebcac1 (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.cpp3
-rw-r--r--src/gui/accessible/qaccessible.h15
-rw-r--r--src/widgets/kernel/qwidget.cpp14
-rw-r--r--src/widgets/widgets/qabstractbutton.cpp10
-rw-r--r--src/widgets/widgets/qpushbutton.cpp4
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
}