summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2012-01-30 18:52:46 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-19 18:07:30 +0100
commit477c43260eea8461dff1e0e8acb4b61a1600518a (patch)
tree907dec508393ebae879b766bfeba34ee7fb3012d /src/widgets/widgets
parent478658fd41dba6c0d94edfbe31086dc3cabff533 (diff)
Accessibility: add text update events
Change-Id: Iece9d100b3f5a379d7d8e29dea67a10d0c918c06 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r--src/widgets/widgets/qabstractslider.cpp2
-rw-r--r--src/widgets/widgets/qabstractspinbox.cpp4
-rw-r--r--src/widgets/widgets/qlineedit_p.cpp5
-rw-r--r--src/widgets/widgets/qprogressbar.cpp2
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol.cpp42
5 files changed, 45 insertions, 10 deletions
diff --git a/src/widgets/widgets/qabstractslider.cpp b/src/widgets/widgets/qabstractslider.cpp
index 2d3f79e43d..083b9303f4 100644
--- a/src/widgets/widgets/qabstractslider.cpp
+++ b/src/widgets/widgets/qabstractslider.cpp
@@ -538,7 +538,7 @@ void QAbstractSlider::setValue(int value)
emit sliderMoved((d->position = value));
}
#ifndef QT_NO_ACCESSIBILITY
- QAccessibleEvent event(QAccessible::ValueChanged, this);
+ QAccessibleValueChangeEvent event(d->value, this);
QAccessible::updateAccessibility(&event);
#endif
sliderChange(SliderValueChange);
diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp
index 7b55b0fa8c..384fff7f7b 100644
--- a/src/widgets/widgets/qabstractspinbox.cpp
+++ b/src/widgets/widgets/qabstractspinbox.cpp
@@ -976,7 +976,7 @@ void QAbstractSpinBox::keyPressEvent(QKeyEvent *event)
}
}
#ifndef QT_NO_ACCESSIBILITY
- QAccessibleEvent event(QAccessible::ValueChanged, this);
+ QAccessibleValueChangeEvent event(d->value, this);
QAccessible::updateAccessibility(&event);
#endif
return;
@@ -1596,7 +1596,7 @@ void QAbstractSpinBoxPrivate::updateState(bool up, bool fromKeyboard /* = false
buttonState = (up ? Up : Down) | (fromKeyboard ? Keyboard : Mouse);
q->stepBy(up ? 1 : -1);
#ifndef QT_NO_ACCESSIBILITY
- QAccessibleEvent event(QAccessible::ValueChanged, q);
+ QAccessibleValueChangeEvent event(value, q);
QAccessible::updateAccessibility(&event);
#endif
}
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp
index 37e956c27f..36e394450b 100644
--- a/src/widgets/widgets/qlineedit_p.cpp
+++ b/src/widgets/widgets/qlineedit_p.cpp
@@ -144,8 +144,9 @@ void QLineEditPrivate::_q_selectionChanged()
emit q->selectionChanged();
#ifndef QT_NO_ACCESSIBILITY
- QAccessibleEvent event(QAccessible::TextSelectionChanged, q);
- QAccessible::updateAccessibility(&event);
+ QAccessibleTextSelectionEvent ev(control->selectionStart(), control->selectionEnd(), q);
+ ev.setCursorPosition(control->cursorPosition());
+ QAccessible::updateAccessibility(&ev);
#endif
}
diff --git a/src/widgets/widgets/qprogressbar.cpp b/src/widgets/widgets/qprogressbar.cpp
index 0439caeb88..22b35d05a5 100644
--- a/src/widgets/widgets/qprogressbar.cpp
+++ b/src/widgets/widgets/qprogressbar.cpp
@@ -314,7 +314,7 @@ void QProgressBar::setValue(int value)
d->value = value;
emit valueChanged(value);
#ifndef QT_NO_ACCESSIBILITY
- QAccessibleEvent event(QAccessible::ValueChanged, this);
+ QAccessibleValueChangeEvent event(value, this);
QAccessible::updateAccessibility(&event);
#endif
if (d->repaintRequired())
diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp
index 7c659ebb64..8806999355 100644
--- a/src/widgets/widgets/qwidgetlinecontrol.cpp
+++ b/src/widgets/widgets/qwidgetlinecontrol.cpp
@@ -768,8 +768,19 @@ void QWidgetLineControl::internalSetText(const QString &txt, int pos, bool edite
#ifndef QT_NO_ACCESSIBILITY
if (changed) {
- QAccessibleEvent event(QAccessible::TextUpdated, parent());
- QAccessible::updateAccessibility(&event);
+ if (oldText.isEmpty()) {
+ QAccessibleTextInsertEvent event(0, txt, parent());
+ event.setCursorPosition(m_cursor);
+ QAccessible::updateAccessibility(&event);
+ } else if (txt.isEmpty()) {
+ QAccessibleTextRemoveEvent event(0, oldText, parent());
+ event.setCursorPosition(m_cursor);
+ QAccessible::updateAccessibility(&event);
+ } else {
+ QAccessibleTextUpdateEvent event(0, oldText, txt, parent());
+ event.setCursorPosition(m_cursor);
+ QAccessible::updateAccessibility(&event);
+ }
}
#endif
}
@@ -816,6 +827,10 @@ void QWidgetLineControl::internalInsert(const QString &s)
addCommand(Command(SetSelection, m_cursor, 0, m_selstart, m_selend));
if (m_maskData) {
QString ms = maskString(m_cursor, s);
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessibleTextInsertEvent insertEvent(m_cursor, ms, parent());
+ QAccessible::updateAccessibility(&insertEvent);
+#endif
for (int i = 0; i < (int) ms.length(); ++i) {
addCommand (Command(DeleteSelection, m_cursor + i, m_text.at(m_cursor + i), -1, -1));
addCommand(Command(Insert, m_cursor + i, ms.at(i), -1, -1));
@@ -824,9 +839,17 @@ void QWidgetLineControl::internalInsert(const QString &s)
m_cursor += ms.length();
m_cursor = nextMaskBlank(m_cursor);
m_textDirty = true;
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessibleTextCursorEvent event(m_cursor, parent());
+ QAccessible::updateAccessibility(&event);
+#endif
} else {
int remaining = m_maxLength - m_text.length();
if (remaining != 0) {
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessibleTextInsertEvent insertEvent(m_cursor, s, parent());
+ QAccessible::updateAccessibility(&insertEvent);
+#endif
m_text.insert(m_cursor, s.left(remaining));
for (int i = 0; i < (int) s.left(remaining).length(); ++i)
addCommand(Command(Insert, m_cursor++, s.at(i), -1, -1));
@@ -854,6 +877,10 @@ void QWidgetLineControl::internalDelete(bool wasBackspace)
addCommand(Command(SetSelection, m_cursor, 0, m_selstart, m_selend));
addCommand(Command((CommandType)((m_maskData ? 2 : 0) + (wasBackspace ? Remove : Delete)),
m_cursor, m_text.at(m_cursor), -1, -1));
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessibleTextRemoveEvent event(m_cursor, m_text.at(m_cursor), parent());
+ QAccessible::updateAccessibility(&event);
+#endif
if (m_maskData) {
m_text.replace(m_cursor, 1, clearString(m_cursor, 1));
addCommand(Command(Insert, m_cursor, m_text.at(m_cursor), -1, -1));
@@ -891,6 +918,10 @@ void QWidgetLineControl::removeSelectedText()
for (i = m_selend-1; i >= m_selstart; --i)
addCommand (Command(RemoveSelection, i, m_text.at(i), -1, -1));
}
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessibleTextRemoveEvent event(m_selstart, m_text.mid(m_selstart, m_selend - m_selstart), parent());
+ QAccessible::updateAccessibility(&event);
+#endif
if (m_maskData) {
m_text.replace(m_selstart, m_selend - m_selstart, clearString(m_selstart, m_selend - m_selstart));
for (int i = 0; i < m_selend - m_selstart; ++i)
@@ -1369,8 +1400,11 @@ void QWidgetLineControl::emitCursorPositionChanged()
m_lastCursorPos = m_cursor;
cursorPositionChanged(oldLast, m_cursor);
#ifndef QT_NO_ACCESSIBILITY
- QAccessibleEvent event(QAccessible::TextCaretMoved, parent());
- QAccessible::updateAccessibility(&event);
+ // otherwise we send a selection update which includes the cursor
+ if (!hasSelectedText()) {
+ QAccessibleTextCursorEvent event(m_cursor, parent());
+ QAccessible::updateAccessibility(&event);
+ }
#endif
}
}