summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/qtextengine.cpp2
-rw-r--r--tests/auto/qcomplextext/tst_qcomplextext.cpp23
2 files changed, 24 insertions, 1 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index f4f2168..06eed55 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -612,7 +612,7 @@ static bool bidiItemize(QTextEngine *engine, QScriptAnalysis *analysis, QBidiCon
} else {
eor = current;
}
- dir = QChar::DirON; status.eor = QChar::DirAN;
+ dir = QChar::DirAN; status.eor = QChar::DirAN;
break;
case QChar::DirCS:
if(status.eor == QChar::DirAN) {
diff --git a/tests/auto/qcomplextext/tst_qcomplextext.cpp b/tests/auto/qcomplextext/tst_qcomplextext.cpp
index 4a96725..fa8a2d1 100644
--- a/tests/auto/qcomplextext/tst_qcomplextext.cpp
+++ b/tests/auto/qcomplextext/tst_qcomplextext.cpp
@@ -68,6 +68,7 @@ public slots:
private slots:
void bidiReorderString_data();
void bidiReorderString();
+ void bidiCursor_qtbug2795();
};
tst_QComplexText::tst_QComplexText()
@@ -159,6 +160,28 @@ void tst_QComplexText::bidiReorderString()
QTEST(visual, "VISUAL");
}
+void tst_QComplexText::bidiCursor_qtbug2795()
+{
+ QString str = QString::fromUtf8("الجزيرة نت");
+ QTextLayout l1(str);
+
+ l1.beginLayout();
+ QTextLine line1 = l1.createLine();
+ l1.endLayout();
+
+ qreal x1 = line1.cursorToX(0) - line1.cursorToX(str.size());
+
+ str.append("1");
+ QTextLayout l2(str);
+ l2.beginLayout();
+ QTextLine line2 = l2.createLine();
+ l2.endLayout();
+
+ qreal x2 = line2.cursorToX(0) - line2.cursorToX(str.size());
+
+ // The cursor should remain at the same position after a digit is appended
+ QVERIFY(x1 == x2);
+}
QTEST_MAIN(tst_QComplexText)
#include "tst_qcomplextext.moc"