QTBUG-16850: QLineEdit::setSelection removes blank characters
authorTarja Sundqvist <tarja.sundqvist@digia.com>
Fri, 25 May 2012 05:39:08 +0000 (08:39 +0300)
committerQt by Nokia <qt-info@nokia.com>
Fri, 25 May 2012 15:23:20 +0000 (17:23 +0200)
Changed checking of the start position so that it does not call d->control->text() because this removes blank characters when an input mask is used. Thus the
selection fails. Instead d->control->end() is used for checking the start position.

Task-number: QTBUG-16850
Change-Id: I62992fb81bd47d432bade9f219782d48eb309956
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
src/widgets/widgets/qlineedit.cpp
tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp

index a74c529..27f47b7 100644 (file)
@@ -907,7 +907,7 @@ int QLineEdit::selectionStart() const
 void QLineEdit::setSelection(int start, int length)
 {
     Q_D(QLineEdit);
-    if (start < 0 || start > (int)d->control->text().length()) {
+    if (start < 0 || start > (int)d->control->end()) {
         qWarning("QLineEdit::setSelection: Invalid start position (%d)", start);
         return;
     }
index 7fe71b0..84a6390 100644 (file)
@@ -272,6 +272,7 @@ private slots:
     void QTBUG697_paletteCurrentColorGroup();
     void QTBUG13520_textNotVisible();
     void QTBUG7174_inputMaskCursorBlink();
+    void QTBUG16850_setSelection();
 
     void bidiVisualMovement_data();
     void bidiVisualMovement();
@@ -3722,6 +3723,16 @@ void tst_QLineEdit::QTBUG7174_inputMaskCursorBlink()
     QVERIFY(edit.updateRegion.contains(cursorRect));
 }
 
+void tst_QLineEdit::QTBUG16850_setSelection()
+{
+    QLineEdit le;
+    le.setInputMask("00:0");
+    le.setText("  1");
+    le.setSelection(3, 1);
+    QCOMPARE(le.selectionStart(), 3);
+    QCOMPARE(le.selectedText(), QString("1"));
+}
+
 void tst_QLineEdit::bidiVisualMovement_data()
 {
     QTest::addColumn<QString>("logical");