QLineEdit: Fix End key for input masks
Consider this simple example: QLineEdit edit; edit.setInputMask( "9-9-9-9-9-9" ); edit.show(); Without any input, m_text will contain: " - - - - - ". text() removes the input mask's mask characters from that and returns " ". A string with 6 spaces. Thus currently the End key jumps to position 6, which is in the middle of the string. Using m_text the End key jumps to the actual end. [ChangeLog][QtWidgets][QLineEdit] Fixed End key in combination with certain input masks. Task-number: QTBUG-16187 Task-number: QTBUG-20414 Change-Id: Ibb30a1dfa2f78103611b5afc9971dc43e8bdcc4a Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
This commit is contained in:
parent
c15a069830
commit
9f48f1ebc2
@ -217,7 +217,7 @@ public:
|
||||
void cursorWordBackward(bool mark) { moveCursor(m_textLayout.previousCursorPosition(m_cursor, QTextLayout::SkipWords), mark); }
|
||||
|
||||
void home(bool mark) { moveCursor(0, mark); }
|
||||
void end(bool mark) { moveCursor(text().length(), mark); }
|
||||
void end(bool mark) { moveCursor(m_text.length(), mark); }
|
||||
|
||||
int xToPos(int x, QTextLine::CursorPosition = QTextLine::CursorBetweenCharacters) const;
|
||||
QRect rectForPos(int pos) const;
|
||||
|
@ -760,6 +760,14 @@ void tst_QLineEdit::keypress_inputMask_data()
|
||||
keys.addKeyClick(Qt::Key_Delete);
|
||||
QTest::newRow("deleting all") << QString("000.000;_") << keys << QString(".") << QString("___.___");
|
||||
}
|
||||
{
|
||||
QTestEventList keys;
|
||||
// inserting at end
|
||||
addKeySequenceStandardKey(keys, QKeySequence::MoveToEndOfLine);
|
||||
keys.addKeyClick(Qt::Key_Left);
|
||||
keys.addKeyClick(Qt::Key_0);
|
||||
QTest::newRow("insert at end") << QString("9-9-9") << keys << QString("--0") << QString(" - -0");
|
||||
}
|
||||
{
|
||||
QTestEventList keys;
|
||||
// inserting '12.12' then two backspaces
|
||||
|
Loading…
Reference in New Issue
Block a user