From 1f4f547a070356dda459a45b9f1c17fd4995d793 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 18 May 2020 15:05:32 +0200 Subject: Listen for the LanguageChange event in event() instead of using filters Now that the LanguageChange event is sent to all top level windows to pass on down to items then we can drop the event filter and just listen for it in the event() function. Pick-to: 5.15 Change-Id: I6c9699a798680695ea1d0013266d3a034b74ae7b Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquickdialogbuttonbox.cpp | 27 ++++++--------------------- src/quicktemplates2/qquickdialogbuttonbox_p.h | 1 + tests/auto/translation/tst_translation.cpp | 1 + 3 files changed, 8 insertions(+), 21 deletions(-) diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp index df253add..b9e9674b 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox.cpp +++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp @@ -706,34 +706,19 @@ void QQuickDialogButtonBox::updatePolish() d->updateLayout(); } -class LanguageEventFilter : public QObject +bool QQuickDialogButtonBox::event(QEvent *e) { -public: - LanguageEventFilter(QQuickDialogButtonBoxPrivate *box) - : QObject(box->q_ptr) - , boxPrivate(box) - { - } - -protected: - bool eventFilter(QObject *, QEvent *event) - { - if (event->type() == QEvent::LanguageChange) - boxPrivate->updateLanguage(); - return false; - } - -private: - QQuickDialogButtonBoxPrivate *boxPrivate; -}; + Q_D(QQuickDialogButtonBox); + if (e->type() == QEvent::LanguageChange) + d->updateLanguage(); + return QQuickContainer::event(e); +} void QQuickDialogButtonBox::componentComplete() { Q_D(QQuickDialogButtonBox); QQuickContainer::componentComplete(); d->updateLayout(); - // TODO: use the solution in QTBUG-78141 instead, when it's implemented. - qApp->installEventFilter(new LanguageEventFilter(d)); } void QQuickDialogButtonBox::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) diff --git a/src/quicktemplates2/qquickdialogbuttonbox_p.h b/src/quicktemplates2/qquickdialogbuttonbox_p.h index f54ecdca..996f4ef7 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox_p.h +++ b/src/quicktemplates2/qquickdialogbuttonbox_p.h @@ -131,6 +131,7 @@ protected: #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; #endif + bool event(QEvent *e) override; private: Q_DISABLE_COPY(QQuickDialogButtonBox) diff --git a/tests/auto/translation/tst_translation.cpp b/tests/auto/translation/tst_translation.cpp index ffb39f96..81eb0b77 100644 --- a/tests/auto/translation/tst_translation.cpp +++ b/tests/auto/translation/tst_translation.cpp @@ -88,6 +88,7 @@ void tst_translation::dialogButtonBox() QTranslator translator; QVERIFY(translator.load("qtbase_fr.qm", ":/")); QVERIFY(qApp->installTranslator(&translator)); + qApp->sendPostedEvents(); view.engine()->retranslate(); QString translatedSaveText = QGuiApplicationPrivate::platformTheme()->standardButtonText(QPlatformDialogHelper::Save); -- cgit v1.2.3