summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2020-04-22 13:56:38 +0200
committerAndy Shaw <andy.shaw@qt.io>2020-04-24 10:10:55 +0200
commitdddd197d42929149eafc5cb7754b7e6b323a4e97 (patch)
tree472336cee71d3e73e5f33a5d4669b208631df631 /src
parent44e8c90ad4ae5a3d08651a61ac9f0937fb49d26b (diff)
Deprecate QGuiApplication::fontChanged() signal
Rather than have a fontChanged() signal which can be connected to for tracking when the application font has changed, then it is better to use the event that is sent to all windows and the application itself. That way it is easy for a window/widget or item that cares about the change to the application font to catch it in the event() function. [ChangeLog][QtGui][QGuiApplication] Deprecated fontChanged() signal in favor of QEvent::ApplicationFontChanged. Change-Id: Iae8e832238fc85e385a52305bc04f16e597454b0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qguiapplication.cpp11
-rw-r--r--src/gui/kernel/qguiapplication.h3
-rw-r--r--src/widgets/kernel/qapplication.cpp14
3 files changed, 16 insertions, 12 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 1d71c6d075..8e50cbc469 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1900,6 +1900,11 @@ bool QGuiApplication::event(QEvent *e)
if (topLevelWindow->flags() != Qt::Desktop)
postEvent(topLevelWindow, new QEvent(QEvent::LanguageChange));
}
+ } else if (e->type() == QEvent::ApplicationFontChange) {
+ for (auto *topLevelWindow : QGuiApplication::topLevelWindows()) {
+ if (topLevelWindow->flags() != Qt::Desktop)
+ postEvent(topLevelWindow, new QEvent(QEvent::ApplicationFontChange));
+ }
} else if (e->type() == QEvent::Quit) {
// Close open windows. This is done in order to deliver de-expose
// events while the event loop is still running.
@@ -3408,8 +3413,10 @@ void QGuiApplicationPrivate::applyWindowGeometrySpecificationTo(QWindow *window)
/*!
\since 5.11
\fn void QGuiApplication::fontChanged(const QFont &font)
+ \obsolete
- This signal is emitted when the \a font of the application changes.
+ This signal is emitted when the \a font of the application changes. Use
+ QEvent::ApplicationFontChanged instead.
\sa font()
*/
@@ -3450,6 +3457,8 @@ void QGuiApplication::setFont(const QFont &font)
auto font = *QGuiApplicationPrivate::app_font;
locker.unlock();
emit qGuiApp->fontChanged(font);
+ QEvent event(QEvent::ApplicationFontChange);
+ QGuiApplication::sendEvent(qGuiApp, &event);
}
}
diff --git a/src/gui/kernel/qguiapplication.h b/src/gui/kernel/qguiapplication.h
index fc74c5299a..0c642d8ff5 100644
--- a/src/gui/kernel/qguiapplication.h
+++ b/src/gui/kernel/qguiapplication.h
@@ -190,8 +190,9 @@ Q_SIGNALS:
#endif
void paletteChanged(const QPalette &pal);
void applicationDisplayNameChanged();
+#if QT_DEPRECATED_SINCE(6, 0)
void fontChanged(const QFont &font);
-
+#endif
protected:
bool event(QEvent *) override;
bool compressEvent(QEvent *, QObject *receiver, QPostEventList *) override;
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index 27af52e199..d0d2ab22ce 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -1356,26 +1356,20 @@ QFont QApplication::font(const char *className)
void QApplication::setFont(const QFont &font, const char *className)
{
- bool all = false;
FontHash *hash = app_fonts();
if (!className) {
QGuiApplication::setFont(font);
- if (hash && hash->size()) {
- all = true;
+ if (hash && hash->size())
hash->clear();
- }
} else if (hash) {
hash->insert(className, font);
}
if (QApplicationPrivate::is_app_running && !QApplicationPrivate::is_app_closing) {
- // Send ApplicationFontChange to qApp itself, and to the widgets.
QEvent e(QEvent::ApplicationFontChange);
- QCoreApplication::sendEvent(QApplication::instance(), &e);
-
QWidgetList wids = QApplication::allWidgets();
for (QWidgetList::ConstIterator it = wids.constBegin(), cend = wids.constEnd(); it != cend; ++it) {
QWidget *w = *it;
- if (all || (!className && w->isWindow()) || w->inherits(className)) // matching class
+ if (!w->isWindow() && w->inherits(className)) // matching class
sendEvent(w, &e);
}
@@ -1740,14 +1734,14 @@ bool QApplication::event(QEvent *e)
#endif
}
- if(e->type() == QEvent::LanguageChange) {
+ if (e->type() == QEvent::LanguageChange || e->type() == QEvent::ApplicationFontChange) {
// QGuiApplication::event does not account for the cases where
// there is a top level widget without a window handle. So they
// need to have the event posted here
const QWidgetList list = topLevelWidgets();
for (auto *w : list) {
if (!w->windowHandle() && (w->windowType() != Qt::Desktop))
- postEvent(w, new QEvent(QEvent::LanguageChange));
+ postEvent(w, new QEvent(e->type()));
}
}