From 0dd3186d66eedc072b46a448e5f9cf1ca9f266d9 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sat, 4 May 2019 17:03:24 +0000 Subject: [PATCH] introduce QGuiPlatformPlugin::systemIcon --- src/gui/image/qicon.cpp | 5 ++++- src/gui/kernel/qguiplatformplugin.cpp | 6 ++++++ src/gui/kernel/qguiplatformplugin.h | 12 ++++++++---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 2ba510025..d3c23700a 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -894,7 +894,10 @@ QString QIcon::themeName() */ QIcon QIcon::fromTheme(const QString &name, const QIcon &fallback) { - QIcon icon; + QIcon icon = qt_guiPlatformPlugin()->systemIcon(name); + if (!icon.isNull()) { + return icon; + } if (qtIconCache()->contains(name)) { icon = *qtIconCache()->object(name); diff --git a/src/gui/kernel/qguiplatformplugin.cpp b/src/gui/kernel/qguiplatformplugin.cpp index 059c2a405..560163351 100644 --- a/src/gui/kernel/qguiplatformplugin.cpp +++ b/src/gui/kernel/qguiplatformplugin.cpp @@ -162,6 +162,12 @@ QStringList QGuiPlatformPlugin::iconThemeSearchPaths() return paths; } +/* backend for QIcon::fromTheme, null icon means default */ +QIcon QGuiPlatformPlugin::systemIcon(const QString &) +{ + return QIcon(); +} + /* backend for QFileIconProvider, null icon means default */ QIcon QGuiPlatformPlugin::fileSystemIcon(const QFileInfo &) { diff --git a/src/gui/kernel/qguiplatformplugin.h b/src/gui/kernel/qguiplatformplugin.h index 7507c51b1..a8a5a98dd 100644 --- a/src/gui/kernel/qguiplatformplugin.h +++ b/src/gui/kernel/qguiplatformplugin.h @@ -60,6 +60,13 @@ struct Q_GUI_EXPORT QGuiPlatformPluginInterface : public QFactoryInterface { }; +QT_END_NAMESPACE + +#define QGuiPlatformPluginInterface_iid "com.nokia.qt.QGuiPlatformPluginInterface" +Q_DECLARE_INTERFACE(QGuiPlatformPluginInterface, QGuiPlatformPluginInterface_iid) + +QT_BEGIN_NAMESPACE + class Q_GUI_EXPORT QGuiPlatformPlugin : public QObject, public QGuiPlatformPluginInterface { Q_OBJECT @@ -74,6 +81,7 @@ class Q_GUI_EXPORT QGuiPlatformPlugin : public QObject, public QGuiPlatformPlugi virtual QPalette palette(); virtual QString systemIconThemeName(); virtual QStringList iconThemeSearchPaths(); + virtual QIcon systemIcon(const QString &); virtual QIcon fileSystemIcon(const QFileInfo &); enum PlatformHint { PH_ToolButtonStyle, PH_ToolBarIconSize, PH_ItemView_ActivateItemOnSingleClick }; @@ -102,10 +110,6 @@ QGuiPlatformPlugin *qt_guiPlatformPlugin(); QT_END_NAMESPACE -#define QGuiPlatformPluginInterface_iid "com.nokia.qt.QGuiPlatformPluginInterface" -Q_DECLARE_INTERFACE(QGuiPlatformPluginInterface, QGuiPlatformPluginInterface_iid) - QT_END_HEADER - #endif // QGUIPLATFORMPLUGIN_H -- 2.11.0