From 106ce0bd524f0ea8cab9a164160e1535648722da Mon Sep 17 00:00:00 2001 From: Axel Spoerl Date: Fri, 17 Feb 2023 12:42:50 +0100 Subject: [PATCH] QPlainTextEdit code cleanup Replace QObject::connect statements using SIGNAL/SLOT macros with recent API. Replace if/elseif cascades with switch statements. Remove unnecessary blank lines. Change-Id: Ib813e25530905e01f70ad52da11e69163445eaf8 (cherry picked from commit 2f3f3eb0d4d77743c135d95c792f66a4272903f7) Reviewed-by: Shawn Rutledge --- src/widgets/widgets/qplaintextedit.cpp | 135 +++++++++++++++---------- 1 file changed, 81 insertions(+), 54 deletions(-) diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 9f041478f9a..6e30518b013 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -430,10 +430,17 @@ void QPlainTextEditPrivate::_q_cursorPositionChanged() } void QPlainTextEditPrivate::_q_verticalScrollbarActionTriggered(int action) { - if (action == QAbstractSlider::SliderPageStepAdd) { + + const auto a = static_cast(action); + switch (a) { + case QAbstractSlider::SliderPageStepAdd: pageUpDown(QTextCursor::Down, QTextCursor::MoveAnchor, false); - } else if (action == QAbstractSlider::SliderPageStepSub) { + break; + case QAbstractSlider::SliderPageStepSub: pageUpDown(QTextCursor::Up, QTextCursor::MoveAnchor, false); + break; + default: + break; } } @@ -741,23 +748,28 @@ void QPlainTextEditPrivate::init(const QString &txt) control->setPalette(q->palette()); - QObject::connect(vbar, SIGNAL(actionTriggered(int)), q, SLOT(_q_verticalScrollbarActionTriggered(int))); - - QObject::connect(control, SIGNAL(microFocusChanged()), q, SLOT(updateMicroFocus())); - QObject::connect(control, SIGNAL(documentSizeChanged(QSizeF)), q, SLOT(_q_adjustScrollbars())); - QObject::connect(control, SIGNAL(blockCountChanged(int)), q, SIGNAL(blockCountChanged(int))); - QObject::connect(control, SIGNAL(updateRequest(QRectF)), q, SLOT(_q_repaintContents(QRectF))); - QObject::connect(control, SIGNAL(modificationChanged(bool)), q, SIGNAL(modificationChanged(bool))); - - QObject::connect(control, SIGNAL(textChanged()), q, SIGNAL(textChanged())); - QObject::connect(control, SIGNAL(undoAvailable(bool)), q, SIGNAL(undoAvailable(bool))); - QObject::connect(control, SIGNAL(redoAvailable(bool)), q, SIGNAL(redoAvailable(bool))); - QObject::connect(control, SIGNAL(copyAvailable(bool)), q, SIGNAL(copyAvailable(bool))); - QObject::connect(control, SIGNAL(selectionChanged()), q, SIGNAL(selectionChanged())); - QObject::connect(control, SIGNAL(cursorPositionChanged()), q, SLOT(_q_cursorPositionChanged())); - - QObject::connect(control, SIGNAL(textChanged()), q, SLOT(_q_updatePlaceholderVisibility())); - QObject::connect(control, SIGNAL(textChanged()), q, SLOT(updateMicroFocus())); + QObjectPrivate::connect(vbar, &QAbstractSlider::actionTriggered, + this, &QPlainTextEditPrivate::_q_verticalScrollbarActionTriggered); + QObject::connect(control, &QWidgetTextControl::microFocusChanged, q, + [q](){q->updateMicroFocus(); }); + QObjectPrivate::connect(control, &QWidgetTextControl::documentSizeChanged, + this, &QPlainTextEditPrivate::_q_adjustScrollbars); + QObject::connect(control, &QWidgetTextControl::blockCountChanged, + q, &QPlainTextEdit::blockCountChanged); + QObjectPrivate::connect(control, &QWidgetTextControl::updateRequest, + this, &QPlainTextEditPrivate::_q_repaintContents); + QObject::connect(control, &QWidgetTextControl::modificationChanged, + q, &QPlainTextEdit::modificationChanged); + QObject::connect(control, &QWidgetTextControl::textChanged, q, &QPlainTextEdit::textChanged); + QObject::connect(control, &QWidgetTextControl::undoAvailable, q, &QPlainTextEdit::undoAvailable); + QObject::connect(control, &QWidgetTextControl::redoAvailable, q, &QPlainTextEdit::redoAvailable); + QObject::connect(control, &QWidgetTextControl::copyAvailable, q, &QPlainTextEdit::copyAvailable); + QObject::connect(control, &QWidgetTextControl::selectionChanged, q, &QPlainTextEdit::selectionChanged); + QObjectPrivate::connect(control, &QWidgetTextControl::cursorPositionChanged, + this, &QPlainTextEditPrivate::_q_cursorPositionChanged); + QObjectPrivate::connect(control, &QWidgetTextControl::textChanged, + this, &QPlainTextEditPrivate::_q_updatePlaceholderVisibility); + QObject::connect(control, &QWidgetTextControl::textChanged, q, [q](){q->updateMicroFocus(); }); // set a null page size initially to avoid any relayouting until the textedit // is shown. relayoutDocument() will take care of setting the page size to the @@ -984,8 +996,6 @@ void QPlainTextEditPrivate::_q_adjustScrollbars() vSliderLength = lineSpacing != 0 ? viewport->height() / lineSpacing : 0; } - - QSizeF documentSize = documentLayout->documentSize(); vbar->setRange(0, qMax(0, vmax)); vbar->setPageStep(vSliderLength); @@ -1500,53 +1510,57 @@ bool QPlainTextEdit::event(QEvent *e) { Q_D(QPlainTextEdit); + switch (e->type()) { #ifndef QT_NO_CONTEXTMENU - if (e->type() == QEvent::ContextMenu - && static_cast(e)->reason() == QContextMenuEvent::Keyboard) { - ensureCursorVisible(); - const QPoint cursorPos = cursorRect().center(); - QContextMenuEvent ce(QContextMenuEvent::Keyboard, cursorPos, d->viewport->mapToGlobal(cursorPos)); - ce.setAccepted(e->isAccepted()); - const bool result = QAbstractScrollArea::event(&ce); - e->setAccepted(ce.isAccepted()); - return result; - } + case QEvent::ContextMenu: + if (static_cast(e)->reason() == QContextMenuEvent::Keyboard) { + ensureCursorVisible(); + const QPoint cursorPos = cursorRect().center(); + QContextMenuEvent ce(QContextMenuEvent::Keyboard, cursorPos, d->viewport->mapToGlobal(cursorPos)); + ce.setAccepted(e->isAccepted()); + const bool result = QAbstractScrollArea::event(&ce); + e->setAccepted(ce.isAccepted()); + return result; + } + break; #endif // QT_NO_CONTEXTMENU - if (e->type() == QEvent::ShortcutOverride - || e->type() == QEvent::ToolTip) { + case QEvent::ShortcutOverride: + case QEvent::ToolTip: d->sendControlEvent(e); - } + break; #ifdef QT_KEYPAD_NAVIGATION - else if (e->type() == QEvent::EnterEditFocus || e->type() == QEvent::LeaveEditFocus) { + case QEvent::EnterEditFocus: + case QEvent::LeaveEditFocus: if (QApplicationPrivate::keypadNavigationEnabled()) d->sendControlEvent(e); - } + break; #endif #ifndef QT_NO_GESTURES - else if (e->type() == QEvent::Gesture) { - QGestureEvent *ge = static_cast(e); - QPanGesture *g = static_cast(ge->gesture(Qt::PanGesture)); - if (g) { + case QEvent::Gesture: + if (auto *g = static_cast(e)->gesture(Qt::PanGesture)) { + QPanGesture *panGesture = static_cast(g); QScrollBar *hBar = horizontalScrollBar(); QScrollBar *vBar = verticalScrollBar(); - if (g->state() == Qt::GestureStarted) + if (panGesture->state() == Qt::GestureStarted) d->originalOffsetY = vBar->value(); - QPointF offset = g->offset(); + QPointF offset = panGesture->offset(); if (!offset.isNull()) { if (QGuiApplication::isRightToLeft()) offset.rx() *= -1; // QPlainTextEdit scrolls by lines only in vertical direction QFontMetrics fm(document()->defaultFont()); int lineHeight = fm.height(); - int newX = hBar->value() - g->delta().x(); + int newX = hBar->value() - panGesture->delta().x(); int newY = d->originalOffsetY - offset.y()/lineHeight; hBar->setValue(newX); vBar->setValue(newY); } } return true; - } #endif // QT_NO_GESTURES + default: + break; + } return QAbstractScrollArea::event(e); } @@ -2278,21 +2292,29 @@ void QPlainTextEdit::changeEvent(QEvent *e) { Q_D(QPlainTextEdit); QAbstractScrollArea::changeEvent(e); - if (e->type() == QEvent::ApplicationFontChange - || e->type() == QEvent::FontChange) { + + switch (e->type()) { + case QEvent::ApplicationFontChange: + case QEvent::FontChange: d->control->document()->setDefaultFont(font()); - } else if (e->type() == QEvent::ActivationChange) { - d->control->setPalette(palette()); + break; + case QEvent::ActivationChange: if (!isActiveWindow()) d->autoScrollTimer.stop(); - } else if (e->type() == QEvent::EnabledChange) { + break; + case QEvent::EnabledChange: e->setAccepted(isEnabled()); d->control->setPalette(palette()); d->sendControlEvent(e); - } else if (e->type() == QEvent::PaletteChange) { + break; + case QEvent::PaletteChange: d->control->setPalette(palette()); - } else if (e->type() == QEvent::LayoutDirectionChange) { + break; + case QEvent::LayoutDirectionChange: d->sendControlEvent(e); + break; + default: + break; } } @@ -2977,12 +2999,17 @@ void QPlainTextEditPrivate::append(const QString &text, Qt::TextFormat format) bool documentSizeChangedBlocked = documentLayout->priv()->blockDocumentSizeChanged; documentLayout->priv()->blockDocumentSizeChanged = true; - if (format == Qt::RichText) + switch (format) { + case Qt::RichText: control->appendHtml(text); - else if (format == Qt::PlainText) + break; + case Qt::PlainText: control->appendPlainText(text); - else + break; + default: control->append(text); + break; + } if (maximumBlockCount > 0) { if (document->blockCount() > maximumBlockCount) {