From: Weng Xuetian Date: Mon, 09 Sep 2013 15:43:06 +0000 Subject: Delay KDE class initialization to main loop X-Git-Url: http://quickgit.kde.org/?p=kde-workspace.git&a=commitdiff&h=2e5a2450762f8dedf9ffd77028ed06b3a39a807d --- Delay KDE class initialization to main loop Gui platform plugin is loaded during QApplication construction, but it relies on some KApplication/QApplication data to work correctly. This patch delays the initialization to main loop, to ensure KApplication/QApplication is already constructed. BUG: 324574 FIXED-IN: 4.11.2 REVIEW: 112602 --- --- qguiplatformplugin_kde/qguiplatformplugin_kde.cpp +++ qguiplatformplugin_kde/qguiplatformplugin_kde.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -153,9 +154,7 @@ public: KQGuiPlatformPlugin() { - connect(KIconLoader::global(), SIGNAL(iconLoaderSettingsChanged()), this, SLOT(updateToolbarIcons())); - connect(KGlobalSettings::self(), SIGNAL(toolbarAppearanceChanged(int)), this, SLOT(updateToolbarStyle())); - connect(KGlobalSettings::self(), SIGNAL(kdisplayStyleChanged()), this, SLOT(updateWidgetStyle())); + QMetaObject::invokeMethod(this, "init", Qt::QueuedConnection); } virtual QStringList keys() const { return QStringList() << QLatin1String("kde"); } @@ -340,6 +339,13 @@ } private slots: + void init() + { + connect(KIconLoader::global(), SIGNAL(iconLoaderSettingsChanged()), this, SLOT(updateToolbarIcons())); + connect(KGlobalSettings::self(), SIGNAL(toolbarAppearanceChanged(int)), this, SLOT(updateToolbarStyle())); + connect(KGlobalSettings::self(), SIGNAL(kdisplayStyleChanged()), this, SLOT(updateWidgetStyle())); + } + void updateToolbarStyle() { //from gtksymbol.cpp