From dd52aed32026efd169c31703209cc7d375548e48 Mon Sep 17 00:00:00 2001 From: Mike Chen Date: Thu, 22 Feb 2024 10:34:22 +0800 Subject: [PATCH] Fix QTextEdit/QPlanTextEdit palette not updated QPlainTextEdit/QTextEdit, etc. never received ActivationChange when used as child widget. Set palette to control on WindowActivate/WindowDeactivate Pick-to: 6.6 6.5 Change-Id: Iae75d9dcfba0c6171c556626551b37d4549006c7 Reviewed-by: Volker Hilsheimer (cherry picked from commit 402cb510e1d40825d74447af831918f4a2a951f2) Reviewed-by: Qt Cherry-pick Bot --- src/widgets/widgets/qplaintextedit.cpp | 5 ++++- src/widgets/widgets/qtextedit.cpp | 13 +++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 305d5a0e056..8362c6c629d 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -1557,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; } @@ -2298,7 +2302,6 @@ void QPlainTextEdit::changeEvent(QEvent *e) d->control->document()->setDefaultFont(font()); break; case QEvent::ActivationChange: - d->control->setPalette(palette()); if (!isActiveWindow()) d->autoScrollTimer.stop(); break; diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index c749bed593c..4644801d68a 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -1083,7 +1083,6 @@ bool QTextEdit::event(QEvent *e) #ifndef QT_NO_CONTEXTMENU if (e->type() == QEvent::ContextMenu && static_cast(e)->reason() == QContextMenuEvent::Keyboard) { - Q_D(QTextEdit); ensureCursorVisible(); const QPoint cursorPos = cursorRect().center(); QContextMenuEvent ce(QContextMenuEvent::Keyboard, cursorPos, d->viewport->mapToGlobal(cursorPos)); @@ -1091,19 +1090,18 @@ bool QTextEdit::event(QEvent *e) const bool result = QAbstractScrollArea::event(&ce); e->setAccepted(ce.isAccepted()); return result; - } else if (e->type() == QEvent::ShortcutOverride - || e->type() == QEvent::ToolTip) { + } else if (e->type() == QEvent::ShortcutOverride || e->type() == QEvent::ToolTip) { d->sendControlEvent(e); - } -#else - Q_UNUSED(d); + } else #endif // QT_NO_CONTEXTMENU #ifdef QT_KEYPAD_NAVIGATION if (e->type() == QEvent::EnterEditFocus || e->type() == QEvent::LeaveEditFocus) { if (QApplicationPrivate::keypadNavigationEnabled()) d->sendControlEvent(e); - } + } else #endif + if (e->type() == QEvent::WindowActivate || e->type() == QEvent::WindowDeactivate) + d->control->setPalette(palette()); return QAbstractScrollArea::event(e); } @@ -1906,7 +1904,6 @@ void QTextEdit::changeEvent(QEvent *e) || e->type() == QEvent::FontChange) { d->control->document()->setDefaultFont(font()); } else if (e->type() == QEvent::ActivationChange) { - d->control->setPalette(palette()); if (!isActiveWindow()) d->autoScrollTimer.stop(); } else if (e->type() == QEvent::EnabledChange) {