diff --git a/src/quick/items/qquicktextcontrol.cpp b/src/quick/items/qquicktextcontrol.cpp index 7fa990ba9fac72870167d7b6d30be214ca520d11..8bc94b919c62c7198628df93bf10d3141e824a4b 100644 --- a/src/quick/items/qquicktextcontrol.cpp +++ b/src/quick/items/qquicktextcontrol.cpp @@ -1206,18 +1206,14 @@ void QQuickTextControlPrivate::mousePressEvent(QMouseEvent *e, const QPointF &po } } - if (interactionFlags & Qt::TextEditable) { + if (cursor.position() != oldCursorPos) { q->updateCursorRectangle(true); - if (cursor.position() != oldCursorPos) - emit q->cursorPositionChanged(); + emit q->cursorPositionChanged(); + } + if (interactionFlags & Qt::TextEditable) _q_updateCurrentCharFormatAndSelection(); - } else { - if (cursor.position() != oldCursorPos) { - emit q->cursorPositionChanged(); - q->updateCursorRectangle(true); - } + else selectionChanged(); - } repaintOldAndNewSelection(oldSelection); hadSelectionOnMousePress = cursor.hasSelection(); } diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index cd5f262f37a89a68c881a6420c92402a1d35dfca..fc02815adf234e76fdf0b9fc3e3fd68857144828 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -1144,7 +1144,7 @@ void QQuickTextEdit::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { Q_D(QQuickTextEdit); - if (newGeometry.width() != oldGeometry.width() && d->wrapMode != NoWrap && widthValid() && !d->inLayout) { + if (newGeometry.width() != oldGeometry.width() && widthValid() && !d->inLayout) { updateSize(); moveCursorDelegate(); } diff --git a/tests/auto/quick/qquicktextedit/data/horizontalAlignment_RightToLeft.qml b/tests/auto/quick/qquicktextedit/data/horizontalAlignment_RightToLeft.qml index 2163838488c621ba06e92a77f3bba0b496e834f4..8231e3f42b592cbe12e279fda36f8be5fd7a1eef 100644 --- a/tests/auto/quick/qquicktextedit/data/horizontalAlignment_RightToLeft.qml +++ b/tests/auto/quick/qquicktextedit/data/horizontalAlignment_RightToLeft.qml @@ -8,6 +8,7 @@ Rectangle { property string text: "اختبا" Rectangle { + id: arabicContainer anchors.centerIn: parent width: 200 height: 20 @@ -22,4 +23,19 @@ Rectangle { textFormat: TextEdit.AutoText } } + + Rectangle { + anchors.top: arabicContainer.bottom + anchors.left: arabicContainer.left + width: 200 + height: 20 + color: "green" + + TextEdit { + id: emptyTextEdit + objectName: "emptyTextEdit" + anchors.fill: parent + textFormat: TextEdit.AutoText + } + } } diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp index 9c34a7c8d8cd2a91e89985951b6f26933df477de..0bc48c98da557b15d195b82197f5b2715d265bdb 100644 --- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp +++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp @@ -772,6 +772,14 @@ void tst_qquicktextedit::hAlign_RightToLeft() textEdit->setHAlign(QQuickTextEdit::AlignRight); QCOMPARE(textEdit->hAlign(), QQuickTextEdit::AlignRight); QVERIFY(textEdit->positionToRectangle(0).x() > canvas.width()/2); + + // make sure editor doesn't rely on input for updating size + QQuickTextEdit *emptyEdit = canvas.rootObject()->findChild<QQuickTextEdit*>("emptyTextEdit"); + QVERIFY(emptyEdit != 0); + platformInputContext.setInputDirection(Qt::RightToLeft); + emptyEdit->setFocus(true); + QCOMPARE(emptyEdit->hAlign(), QQuickTextEdit::AlignRight); + QVERIFY(emptyEdit->cursorRectangle().left() > canvas.width()/2); } void tst_qquicktextedit::vAlign()