diff options
-rw-r--r-- | src/widgets/widgets/qplaintextedit.cpp | 15 | ||||
-rw-r--r-- | tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp | 26 |
2 files changed, 29 insertions, 12 deletions
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index cd9889e9ff..f41e7f009b 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -622,10 +622,7 @@ void QPlainTextEditPrivate::setTopBlock(int blockNumber, int lineNumber, int dx) lineNumber = maxTopLine - block.firstLineNumber(); } - { - const QSignalBlocker blocker(vbar); - vbar->setValue(newTopLine); - } + vbar->setValue(newTopLine); if (!dx && blockNumber == control->topBlock && lineNumber == topLine) return; @@ -641,10 +638,7 @@ void QPlainTextEditPrivate::setTopBlock(int blockNumber, int lineNumber, int dx) control->topBlock = blockNumber; topLine = lineNumber; - { - const QSignalBlocker blocker(vbar); - vbar->setValue(block.firstLineNumber() + lineNumber); - } + vbar->setValue(block.firstLineNumber() + lineNumber); if (dx || dy) { viewport->scroll(q->isRightToLeft() ? -dx : dx, dy); @@ -1002,10 +996,7 @@ void QPlainTextEditPrivate::_q_adjustScrollbars() if (firstVisibleBlock.isValid()) visualTopLine = firstVisibleBlock.firstLineNumber() + topLine; - { - const QSignalBlocker blocker(vbar); - vbar->setValue(visualTopLine); - } + vbar->setValue(visualTopLine); hbar->setRange(0, (int)documentSize.width() - viewport->width()); hbar->setPageStep(viewport->width()); diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp index e3ccc58867..ed68c735d4 100644 --- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp +++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp @@ -132,6 +132,7 @@ private slots: void appendTextWhenInvisible(); void placeholderVisibility_data(); void placeholderVisibility(); + void scrollBarSignals(); private: void createSelection(); @@ -1919,5 +1920,30 @@ void tst_QPlainTextEdit::placeholderVisibility() QTRY_VERIFY(plainTextEdit_d->placeholderVisible == placeholderVisible); } + +void tst_QPlainTextEdit::scrollBarSignals() +{ + QPlainTextEdit plainTextEdit; + QString longText; + for (uint i = 0; i < 500; ++i) + longText += "This is going to be a very long text for scroll signal testing.\n"; + plainTextEdit.setPlainText(longText); + QScrollBar *vbar = plainTextEdit.verticalScrollBar(); + plainTextEdit.show(); + QVERIFY(QTest::qWaitForWindowExposed(&plainTextEdit)); + QSignalSpy spy(vbar, &QScrollBar::valueChanged); + + QTest::keyClick(vbar, Qt::Key_Down); + QTRY_COMPARE(spy.count(), 1); + QTest::keyClick(vbar, Qt::Key_PageDown); + QTRY_COMPARE(spy.count(), 2); + QTest::keyClick(vbar, Qt::Key_PageDown); + QTRY_COMPARE(spy.count(), 3); + QTest::keyClick(vbar, Qt::Key_Up); + QTRY_COMPARE(spy.count(), 4); + QTest::keyClick(vbar, Qt::Key_PageUp); + QTRY_COMPARE(spy.count(), 5); +} + QTEST_MAIN(tst_QPlainTextEdit) #include "tst_qplaintextedit.moc" |