diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp
index 0d0d0a17e0994d38bc74245a766d38f81b9abff2..65a0d6215a0d01c450ee0b42686ad8f34efde053 100644
--- a/src/quick/items/qquicktextinput.cpp
+++ b/src/quick/items/qquicktextinput.cpp
@@ -1470,7 +1470,7 @@ void QQuickTextInput::keyPressEvent(QKeyEvent* ev)
         int cursorPosition = d->m_cursor;
         if (cursorPosition == 0)
             ignore = ev->key() == (d->layoutDirection() == Qt::LeftToRight ? Qt::Key_Left : Qt::Key_Right);
-        if (!ignore && cursorPosition == text().length())
+        if (!ignore && cursorPosition == d->m_text.length())
             ignore = ev->key() == (d->layoutDirection() == Qt::LeftToRight ? Qt::Key_Right : Qt::Key_Left);
     }
     if (ignore) {
diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
index d1ed6dd05a1f7258789bdf4810003807ea6ee394..4ffbe9ccd57777611f9f1fe7a07fce43556bd18d 100644
--- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
+++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
@@ -6123,6 +6123,12 @@ void tst_qquicktextinput::keypress_inputMask_data()
         keys << Qt::Key_Home << "12ab";
         QTest::newRow("uppercase") << QString("9999 >AA;_") << keys << QString("12 AB") << QString("12__ AB");
     }
+    {
+        KeyList keys;
+        // inserting '12ab'
+        keys << Qt::Key_Right << Qt::Key_Right << "1";
+        QTest::newRow("Move in mask") << QString("#0:00;*") << keys << QString(":1") << QString("**:1*");
+    }
 }
 
 void tst_qquicktextinput::keypress_inputMask()