From 5a5d7b57fee23d934d90989133f870404557ff6f Mon Sep 17 00:00:00 2001 From: Christoph Cullmann Date: Mon, 29 Mar 2021 19:41:56 +0200 Subject: [PATCH 1/2] Revert "add private header to avoid extern in .cpp file" This reverts commit bd648dd0755d03dc01b267b3cdcec09b045da696. --- src/kiconloader.cpp | 7 ++----- src/kicontheme.cpp | 4 +++- src/kicontheme_p.h | 19 ------------------- 3 files changed, 5 insertions(+), 25 deletions(-) delete mode 100644 src/kicontheme_p.h diff --git a/src/kiconloader.cpp b/src/kiconloader.cpp index 3a6bf2b..33c378b 100644 --- a/src/kiconloader.cpp +++ b/src/kiconloader.cpp @@ -11,7 +11,6 @@ */ #include "kiconloader.h" -#include "kicontheme_p.h" // kdecore #include @@ -384,6 +383,8 @@ public: bool mCustomPalette = false; }; +extern void initRCCIconTheme(); + class KIconLoaderGlobalData : public QObject { Q_OBJECT @@ -391,10 +392,6 @@ class KIconLoaderGlobalData : public QObject public: KIconLoaderGlobalData() { - // we trigger the rcc loading & fallback theme setting here instead of the old way via Q_COREAPP_STARTUP_FUNCTION - // so that loading the icon engine plugin doesn't trigger changing the icon theme while loading the first icon - // if nothing else initialized this before. - // ensure we load rcc files for application bundles (+ setup their theme) initRCCIconTheme(); diff --git a/src/kicontheme.cpp b/src/kicontheme.cpp index af9fd81..8e499d2 100644 --- a/src/kicontheme.cpp +++ b/src/kicontheme.cpp @@ -10,7 +10,6 @@ */ #include "kicontheme.h" -#include "kicontheme_p.h" #include "debug.h" @@ -33,6 +32,9 @@ Q_GLOBAL_STATIC(QString, _themeOverride) +// Support for icon themes in RCC files. +// The intended use case is standalone apps on Windows / MacOS / etc. +// For this reason we use AppDataLocation: BINDIR/data on Windows, Resources on OS X void initRCCIconTheme() { const QString iconThemeRcc = QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("icontheme.rcc")); diff --git a/src/kicontheme_p.h b/src/kicontheme_p.h deleted file mode 100644 index eea889f..0000000 --- a/src/kicontheme_p.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - This file is part of the KDE libraries - SPDX-FileCopyrightText: 2021 Christoph Cullmann - - SPDX-License-Identifier: LGPL-2.0-or-later -*/ - -#ifndef KICONTHEME_P_H -#define KICONTHEME_P_H - -/** - * Support for icon themes in RCC files. - * The intended use case is standalone apps on Windows / MacOS / etc. - * For this reason we use AppDataLocation: BINDIR/data on Windows, Resources on OS X. - * Will be triggered by KIconLoaderGlobalData construction. - */ -void initRCCIconTheme(); - -#endif -- GitLab From e4fb7dda788e5dc44ada56f089053453f3ff0c1c Mon Sep 17 00:00:00 2001 From: Christoph Cullmann Date: Mon, 29 Mar 2021 19:42:15 +0200 Subject: [PATCH 2/2] Revert "avoid race condition on loading the plugin" This reverts commit 65ee2fac5eae6f69a6c72b315f0e5d702f1c4493. --- src/kiconloader.cpp | 12 ------------ src/kicontheme.cpp | 12 ++++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/kiconloader.cpp b/src/kiconloader.cpp index 33c378b..f608966 100644 --- a/src/kiconloader.cpp +++ b/src/kiconloader.cpp @@ -383,8 +383,6 @@ public: bool mCustomPalette = false; }; -extern void initRCCIconTheme(); - class KIconLoaderGlobalData : public QObject { Q_OBJECT @@ -392,16 +390,6 @@ class KIconLoaderGlobalData : public QObject public: KIconLoaderGlobalData() { - // ensure we load rcc files for application bundles (+ setup their theme) - initRCCIconTheme(); - - // Set the icon theme fallback to breeze - // Most of our apps use "lots" of icons that most of the times - // are only available with breeze, we still honour the user icon - // theme but if the icon is not found there, we go to breeze - // since it's almost sure it'll be there - QIcon::setFallbackThemeName(QStringLiteral("breeze")); - const QStringList genericIconsFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("mime/generic-icons")); // qCDebug(KICONTHEMES) << genericIconsFiles; for (const QString &file : genericIconsFiles) { diff --git a/src/kicontheme.cpp b/src/kicontheme.cpp index 8e499d2..5be083d 100644 --- a/src/kicontheme.cpp +++ b/src/kicontheme.cpp @@ -57,7 +57,19 @@ void initRCCIconTheme() } } } +Q_COREAPP_STARTUP_FUNCTION(initRCCIconTheme) +// Set the icon theme fallback to breeze +// Most of our apps use "lots" of icons that most of the times +// are only available with breeze, we still honour the user icon +// theme but if the icon is not found there, we go to breeze +// since it's almost sure it'll be there +static void setBreezeFallback() +{ + QIcon::setFallbackThemeName(QStringLiteral("breeze")); +} + +Q_COREAPP_STARTUP_FUNCTION(setBreezeFallback) class KIconThemeDir; class KIconThemePrivate { -- GitLab