diff options
Diffstat (limited to 'src/widgets/widgets/qplaintextedit.cpp')
-rw-r--r-- | src/widgets/widgets/qplaintextedit.cpp | 80 |
1 files changed, 42 insertions, 38 deletions
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 9ca2a84d07..8362c6c629 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -418,7 +418,7 @@ QPlainTextEditControl::QPlainTextEditControl(QPlainTextEdit *parent) setAcceptRichText(false); } -void QPlainTextEditPrivate::_q_cursorPositionChanged() +void QPlainTextEditPrivate::cursorPositionChanged() { pageUpDownLastCursorYIsValid = false; Q_Q(QPlainTextEdit); @@ -429,7 +429,7 @@ void QPlainTextEditPrivate::_q_cursorPositionChanged() emit q->cursorPositionChanged(); } -void QPlainTextEditPrivate::_q_verticalScrollbarActionTriggered(int action) { +void QPlainTextEditPrivate::verticalScrollbarActionTriggered(int action) { const auto a = static_cast<QAbstractSlider::SliderAction>(action); switch (a) { @@ -725,9 +725,14 @@ void QPlainTextEditPrivate::updateViewport() } QPlainTextEditPrivate::QPlainTextEditPrivate() - : tabChangesFocus(false), showCursorOnInitialShow(false), backgroundVisible(false), - centerOnScroll(false), inDrag(false), clickCausedFocus(false), placeholderVisible(true), - pageUpDownLastCursorYIsValid(false) + : tabChangesFocus(false) + , showCursorOnInitialShow(false) + , backgroundVisible(false) + , centerOnScroll(false) + , inDrag(false) + , clickCausedFocus(false) + , pageUpDownLastCursorYIsValid(false) + , placeholderTextShown(false) { } @@ -744,15 +749,15 @@ void QPlainTextEditPrivate::init(const QString &txt) control->setPalette(q->palette()); QObjectPrivate::connect(vbar, &QAbstractSlider::actionTriggered, - this, &QPlainTextEditPrivate::_q_verticalScrollbarActionTriggered); + this, &QPlainTextEditPrivate::verticalScrollbarActionTriggered); QObject::connect(control, &QWidgetTextControl::microFocusChanged, q, [q](){q->updateMicroFocus(); }); QObjectPrivate::connect(control, &QWidgetTextControl::documentSizeChanged, - this, &QPlainTextEditPrivate::_q_adjustScrollbars); + this, &QPlainTextEditPrivate::adjustScrollbars); QObject::connect(control, &QWidgetTextControl::blockCountChanged, q, &QPlainTextEdit::blockCountChanged); QObjectPrivate::connect(control, &QWidgetTextControl::updateRequest, - this, &QPlainTextEditPrivate::_q_repaintContents); + this, &QPlainTextEditPrivate::repaintContents); QObject::connect(control, &QWidgetTextControl::modificationChanged, q, &QPlainTextEdit::modificationChanged); QObject::connect(control, &QWidgetTextControl::textChanged, q, &QPlainTextEdit::textChanged); @@ -761,9 +766,9 @@ void QPlainTextEditPrivate::init(const QString &txt) 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); + this, &QPlainTextEditPrivate::cursorPositionChanged); QObjectPrivate::connect(control, &QWidgetTextControl::textChanged, - this, &QPlainTextEditPrivate::_q_updatePlaceholderVisibility); + this, &QPlainTextEditPrivate::updatePlaceholderVisibility); QObject::connect(control, &QWidgetTextControl::textChanged, q, [q](){q->updateMicroFocus(); }); // set a null page size initially to avoid any relayouting until the textedit @@ -792,26 +797,19 @@ void QPlainTextEditPrivate::init(const QString &txt) #endif } -void QPlainTextEditPrivate::_q_updatePlaceholderVisibility() +void QPlainTextEditPrivate::updatePlaceholderVisibility() { - Q_Q(QPlainTextEdit); - // We normally only repaint the part of view that contains text in the - // document that has changed (in _q_repaintContents). But the placeholder + // document that has changed (in repaintContents). But the placeholder // text is not a part of the document, but is drawn on separately. So whenever // we either show or hide the placeholder text, we issue a full update. - bool placeholderCurrentyVisible = placeholderVisible; - - placeholderVisible = !placeholderText.isEmpty() - && q->document()->isEmpty() - && (!q->firstVisibleBlock().isValid() || - q->firstVisibleBlock().layout()->preeditAreaText().isEmpty()); - - if (placeholderCurrentyVisible != placeholderVisible) + if (placeholderTextShown != placeHolderTextToBeShown()) { viewport->update(); + placeholderTextShown = placeHolderTextToBeShown(); + } } -void QPlainTextEditPrivate::_q_repaintContents(const QRectF &contentsRect) +void QPlainTextEditPrivate::repaintContents(const QRectF &contentsRect) { Q_Q(QPlainTextEdit); if (!contentsRect.isValid()) { @@ -944,7 +942,7 @@ void QPlainTextEditPrivate::pageUpDown(QTextCursor::MoveOperation op, QTextCurso #if QT_CONFIG(scrollbar) -void QPlainTextEditPrivate::_q_adjustScrollbars() +void QPlainTextEditPrivate::adjustScrollbars() { Q_Q(QPlainTextEdit); QTextDocument *doc = control->document(); @@ -1186,8 +1184,7 @@ void QPlainTextEditPrivate::ensureViewportLayouted() editor with line wrap enabled in real time. It also makes for a fast log viewer (see setMaximumBlockCount()). - - \sa QTextDocument, QTextCursor, {Qt Widgets - Application Example}, + \sa QTextDocument, QTextCursor {Syntax Highlighter Example}, {Rich Text Processing} */ @@ -1300,7 +1297,7 @@ void QPlainTextEdit::setDocument(QTextDocument *document) d->documentLayoutPtr = documentLayout; d->updateDefaultTextOption(); d->relayoutDocument(); - d->_q_adjustScrollbars(); + d->adjustScrollbars(); } /*! @@ -1332,7 +1329,7 @@ void QPlainTextEdit::setPlaceholderText(const QString &placeholderText) Q_D(QPlainTextEdit); if (d->placeholderText != placeholderText) { d->placeholderText = placeholderText; - d->_q_updatePlaceholderVisibility(); + d->updatePlaceholderVisibility(); } } @@ -1560,6 +1557,10 @@ bool QPlainTextEdit::event(QEvent *e) } return true; #endif // QT_NO_GESTURES + case QEvent::WindowActivate: + case QEvent::WindowDeactivate: + d->control->setPalette(palette()); + break; default: break; } @@ -1845,7 +1846,7 @@ void QPlainTextEdit::resizeEvent(QResizeEvent *e) Q_D(QPlainTextEdit); if (e->oldSize().width() != e->size().width()) d->relayoutDocument(); - d->_q_adjustScrollbars(); + d->adjustScrollbars(); } void QPlainTextEditPrivate::relayoutDocument() @@ -1911,7 +1912,7 @@ void QPlainTextEdit::paintEvent(QPaintEvent *e) er.setRight(qMin(er.right(), maxX)); painter.setClipRect(er); - if (d->placeholderVisible) { + if (d->placeHolderTextToBeShown()) { const QColor col = d->control->palette().placeholderText().color(); painter.setPen(col); painter.setClipRect(e->rect()); @@ -2211,7 +2212,7 @@ QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery query, QVariant a Q_D(const QPlainTextEdit); switch (query) { case Qt::ImEnabled: - return isEnabled(); + return isEnabled() && !isReadOnly(); case Qt::ImHints: case Qt::ImInputItemClipRectangle: return QWidget::inputMethodQuery(query); @@ -2285,7 +2286,7 @@ void QPlainTextEdit::showEvent(QShowEvent *) d->showCursorOnInitialShow = false; ensureCursorVisible(); } - d->_q_adjustScrollbars(); + d->adjustScrollbars(); } /*! \reimp @@ -2602,7 +2603,7 @@ void QPlainTextEdit::insertFromMimeData(const QMimeData *source) bool QPlainTextEdit::isReadOnly() const { Q_D(const QPlainTextEdit); - return !(d->control->textInteractionFlags() & Qt::TextEditable); + return !d->control || !(d->control->textInteractionFlags() & Qt::TextEditable); } void QPlainTextEdit::setReadOnly(bool ro) @@ -2787,7 +2788,7 @@ void QPlainTextEdit::setLineWrapMode(LineWrapMode wrap) d->lineWrap = wrap; d->updateDefaultTextOption(); d->relayoutDocument(); - d->_q_adjustScrollbars(); + d->adjustScrollbars(); ensureCursorVisible(); } @@ -2873,7 +2874,7 @@ void QPlainTextEdit::setCenterOnScroll(bool enabled) if (enabled == d->centerOnScroll) return; d->centerOnScroll = enabled; - d->_q_adjustScrollbars(); + d->adjustScrollbars(); } @@ -2896,11 +2897,14 @@ bool QPlainTextEdit::find(const QString &exp, QTextDocument::FindFlags options) \overload Finds the next occurrence, matching the regular expression, \a exp, using the given - \a options. The QTextDocument::FindCaseSensitively option is ignored for this overload, - use QRegularExpression::CaseInsensitiveOption instead. + \a options. Returns \c true if a match was found and changes the cursor to select the match; otherwise returns \c false. + + \warning For historical reasons, the case sensitivity option set on + \a exp is ignored. Instead, the \a options are used to determine + if the search is case sensitive or not. */ #if QT_CONFIG(regularexpression) bool QPlainTextEdit::find(const QRegularExpression &exp, QTextDocument::FindFlags options) @@ -3033,7 +3037,7 @@ void QPlainTextEditPrivate::append(const QString &text, Qt::TextFormat format) } documentLayout->priv()->blockDocumentSizeChanged = documentSizeChangedBlocked; - _q_adjustScrollbars(); + adjustScrollbars(); if (atBottom) { |