From 67aef33dd0a76893a6ab66dea57018ea981f1eb1 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 11 Feb 2020 06:56:24 +0100 Subject: [PATCH] Editor: reapply font settings after palette changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I99368b03e093794656cf7a69aa9ef75032c430eb Reviewed-by: Eike Ziller Reviewed-by: Henning Gründl Reviewed-by: David Schulz --- src/plugins/texteditor/texteditor.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index ae5f5f356ea..7e92bc24eb8 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -265,6 +265,10 @@ protected: void contextMenuEvent(QContextMenuEvent *event) override { textEdit->extraAreaContextMenuEvent(event); } + void changeEvent(QEvent *event) override { + if (event->type() == QEvent::PaletteChange) + QCoreApplication::sendEvent(textEdit, event); + } void wheelEvent(QWheelEvent *event) override { QCoreApplication::sendEvent(textEdit->viewport(), event); } @@ -6720,6 +6724,8 @@ void TextEditorWidget::changeEvent(QEvent *e) d->slotUpdateExtraAreaWidth(); d->m_extraArea->update(); } + } else if (e->type() == QEvent::PaletteChange) { + applyFontSettings(); } } @@ -7265,18 +7271,23 @@ void TextEditorWidget::applyFontSettings() p.setBrush(QPalette::Inactive, QPalette::Highlight, p.highlight()); p.setBrush(QPalette::Inactive, QPalette::HighlightedText, p.highlightedText()); - setPalette(p); - setFont(font); - d->updateTabStops(); // update tab stops, they depend on the font + if (p != palette()) + setPalette(p); + if (font != this->font()) { + setFont(font); + d->updateTabStops(); // update tab stops, they depend on the font + } // Line numbers QPalette ep; ep.setColor(QPalette::Dark, lineNumberFormat.foreground().color()); ep.setColor(QPalette::Window, lineNumberFormat.background().style() != Qt::NoBrush ? lineNumberFormat.background().color() : background); - d->m_extraArea->setPalette(ep); + if (ep != d->m_extraArea->palette()) { + d->m_extraArea->setPalette(ep); + d->slotUpdateExtraAreaWidth(); // Adjust to new font width + } - d->slotUpdateExtraAreaWidth(); // Adjust to new font width d->updateHighlights(); }