From fed79b873eb1d8b14fd9314abeb937f268d75b64 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Thu, 20 Apr 2023 10:29:12 +0200 Subject: [PATCH] QWidgetTextControl: emit cursorPositionChanged() when select all Fixes: QTBUG-91643 Pick-to: 6.5 Change-Id: I31745a3106321da0be4074a33768da8b84a8ae3f Reviewed-by: Axel Spoerl Reviewed-by: Volker Hilsheimer --- src/widgets/widgets/qwidgettextcontrol.cpp | 3 +++ tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index 1204b48b505..41add4349ee 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -967,9 +967,12 @@ void QWidgetTextControl::selectAll() { Q_D(QWidgetTextControl); const int selectionLength = qAbs(d->cursor.position() - d->cursor.anchor()); + const int oldCursorPos = d->cursor.position(); d->cursor.select(QTextCursor::Document); d->selectionChanged(selectionLength != qAbs(d->cursor.position() - d->cursor.anchor())); d->cursorIsFocusIndicator = false; + if (d->cursor.position() != oldCursorPos) + emit cursorPositionChanged(); emit updateRequest(); } diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp index 241b0e64f34..e77d8e5f3dc 100644 --- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp +++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp @@ -757,6 +757,11 @@ void tst_QTextEdit::cursorPositionChanged() QCOMPARE(spy2.cursorPositions.size(), 1); QCOMPARE(spy2.cursorPositions.at(0), 0); QCOMPARE(ed->textCursor().position(), 0); + + ed->selectAll(); + QCOMPARE(spy2.cursorPositions.size(), 2); + QCOMPARE(spy2.cursorPositions.at(1), 11); + QCOMPARE(ed->textCursor().position(), 11); } void tst_QTextEdit::setTextCursor()