summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2019-05-09 13:06:22 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2019-05-09 13:06:22 +0000
commit591116490cf313808e8ba05ddd066656a1d1a566 (patch)
tree7aead440549b9052d1a53f4dbea08eb2b87c8be4 /src/widgets
parent3d8ed3ba969ba958401dbf5e6760cf0788f1888e (diff)
parente56d3b03ed92743f33eb7ca1a5aa61dbdedaf19b (diff)
Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" into refs/staging/5.13
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/accessible/simplewidgets.cpp10
-rw-r--r--src/widgets/accessible/simplewidgets_p.h1
-rw-r--r--src/widgets/widgets/qlineedit.cpp6
-rw-r--r--src/widgets/widgets/qwidgettextcontrol.cpp4
4 files changed, 19 insertions, 2 deletions
diff --git a/src/widgets/accessible/simplewidgets.cpp b/src/widgets/accessible/simplewidgets.cpp
index efcf4cdc8b..716c833fc9 100644
--- a/src/widgets/accessible/simplewidgets.cpp
+++ b/src/widgets/accessible/simplewidgets.cpp
@@ -454,6 +454,13 @@ QAccessible::Role QAccessibleDisplay::role() const
return QAccessibleWidget::role();
}
+QAccessible::State QAccessibleDisplay::state() const
+{
+ QAccessible::State s = QAccessibleWidget::state();
+ s.readOnly = true;
+ return s;
+}
+
QString QAccessibleDisplay::text(QAccessible::Text t) const
{
QString str;
@@ -732,10 +739,9 @@ QAccessible::State QAccessibleLineEdit::state() const
QAccessible::State state = QAccessibleWidget::state();
QLineEdit *l = lineEdit();
+ state.editable = true;
if (l->isReadOnly())
state.readOnly = true;
- else
- state.editable = true;
if (l->echoMode() != QLineEdit::Normal)
state.passwordEdit = true;
diff --git a/src/widgets/accessible/simplewidgets_p.h b/src/widgets/accessible/simplewidgets_p.h
index fcd0e7df47..73572e3059 100644
--- a/src/widgets/accessible/simplewidgets_p.h
+++ b/src/widgets/accessible/simplewidgets_p.h
@@ -116,6 +116,7 @@ public:
QString text(QAccessible::Text t) const override;
QAccessible::Role role() const override;
+ QAccessible::State state() const override;
QVector<QPair<QAccessibleInterface*, QAccessible::Relation> >relations(QAccessible::Relation match = QAccessible::AllRelations) const override;
void *interface_cast(QAccessible::InterfaceType t) override;
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp
index ad3d372bd3..3c0f0b791b 100644
--- a/src/widgets/widgets/qlineedit.cpp
+++ b/src/widgets/widgets/qlineedit.cpp
@@ -1369,6 +1369,12 @@ void QLineEdit::setReadOnly(bool enable)
QEvent event(QEvent::ReadOnlyChange);
QCoreApplication::sendEvent(this, &event);
update();
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessible::State changedState;
+ changedState.readOnly = true;
+ QAccessibleStateChangeEvent ev(this, changedState);
+ QAccessible::updateAccessibility(&ev);
+#endif
}
}
diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp
index 711c4bfd2a..07d631cfe9 100644
--- a/src/widgets/widgets/qwidgettextcontrol.cpp
+++ b/src/widgets/widgets/qwidgettextcontrol.cpp
@@ -1972,6 +1972,8 @@ void QWidgetTextControlPrivate::inputMethodEvent(QInputMethodEvent *e)
|| e->preeditString() != cursor.block().layout()->preeditAreaText()
|| e->replacementLength() > 0;
+ int oldCursorPos = cursor.position();
+
cursor.beginEditBlock();
if (isGettingInput) {
cursor.removeSelectedText();
@@ -2076,6 +2078,8 @@ void QWidgetTextControlPrivate::inputMethodEvent(QInputMethodEvent *e)
if (cursor.d)
cursor.d->setX();
+ if (oldCursorPos != cursor.position())
+ emit q->cursorPositionChanged();
if (oldPreeditCursor != preeditCursor)
emit q->microFocusChanged();
}