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>bb10
parent
0ecec0e903
commit
eb57da5b3f
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -419,8 +419,6 @@ void tst_QAccessibility::eventTest()
|
|||
button->setFocus(Qt::MouseFocusReason);
|
||||
QTestAccessibility::clearEvents();
|
||||
QTest::mouseClick(button, Qt::LeftButton, 0);
|
||||
QVERIFY_EVENT(button, 0, QAccessible::StateChanged);
|
||||
QVERIFY_EVENT(button, 0, QAccessible::StateChanged);
|
||||
|
||||
button->setAccessibleName("Olaf the second");
|
||||
QVERIFY_EVENT(button, -1, QAccessible::NameChanged);
|
||||
|
|
|
|||
Loading…
Reference in New Issue