diff options
-rw-r--r-- | src/plugins/coreplugin/icore.h | 1 | ||||
-rw-r--r-- | src/plugins/coreplugin/themesettingswidget.cpp | 31 | ||||
-rw-r--r-- | src/plugins/welcome/welcomeplugin.cpp | 9 |
3 files changed, 11 insertions, 30 deletions
diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index caa13ed670..ad8a35a63a 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -148,7 +148,6 @@ signals: void coreAboutToClose(); void contextAboutToChange(const QList<Core::IContext *> &context); void contextChanged(const Core::Context &context); - void themeChanged(); public: /* internal use */ diff --git a/src/plugins/coreplugin/themesettingswidget.cpp b/src/plugins/coreplugin/themesettingswidget.cpp index 0e952f2e4f..44897c221c 100644 --- a/src/plugins/coreplugin/themesettingswidget.cpp +++ b/src/plugins/coreplugin/themesettingswidget.cpp @@ -155,30 +155,15 @@ void ThemeSettingsWidget::apply() const int index = d->m_ui->themeComboBox->currentIndex(); if (index == -1) return; - ThemeEntry currentTheme = d->m_themeListModel->themeAt(index); - const QString themeId = currentTheme.id().toString(); - Theme *newTheme = new Theme(themeId); - QSettings themeSettings(currentTheme.filePath(), QSettings::IniFormat); - newTheme->readSettings(themeSettings); - setCreatorTheme(newTheme); - emit ICore::instance()->themeChanged(); - QPalette pal = newTheme->flag(Theme::ApplyThemePaletteGlobally) ? newTheme->palette() - : Theme::initialPalette(); - QApplication::setPalette(pal); - if (ManhattanStyle *style = qobject_cast<ManhattanStyle *>(QApplication::style())) { - QStyle *baseStyle = 0; - foreach (const QString &s, creatorTheme()->preferredStyles()) { - if ((baseStyle = QStyleFactory::create(s))) - break; - } - style->setBaseStyle(baseStyle); - } - foreach (QWidget *w, QApplication::topLevelWidgets()) - w->update(); - - // save filename of selected theme in global config + const QString themeId = d->m_themeListModel->themeAt(index).id().toString(); QSettings *settings = ICore::settings(); - settings->setValue(QLatin1String(Constants::SETTINGS_THEME), themeId); + if (settings->value(QLatin1String(Constants::SETTINGS_THEME)).toString() != themeId) { + QMessageBox::information(ICore::mainWindow(), tr("Restart Required"), + tr("The theme change will take effect after a restart of Qt Creator.")); + + // save filename of selected theme in global config + settings->setValue(QLatin1String(Constants::SETTINGS_THEME), themeId); + } } } // namespace Internal diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp index 26b0aed55d..af8560a04b 100644 --- a/src/plugins/welcome/welcomeplugin.cpp +++ b/src/plugins/welcome/welcomeplugin.cpp @@ -100,8 +100,6 @@ public: int activePlugin() const { return m_activePlugin; } public slots: - void onThemeChanged(); - void setActivePlugin(int pos) { if (m_activePlugin != pos) { @@ -118,6 +116,7 @@ private: void sceneGraphError(QQuickWindow::SceneGraphError, const QString &message); void facilitateQml(QQmlEngine *engine); void addPages(const QList<IWelcomePage *> &pages); + void applyTheme(); QWidget *m_modeWidget; QuickContainer *m_welcomePage; @@ -153,7 +152,7 @@ WelcomeMode::WelcomeMode() layout->setSpacing(0); m_welcomePage = new QuickContainer(); - onThemeChanged(); // initialize background color and theme properties + applyTheme(); // initialize background color and theme properties m_welcomePage->setResizeMode(QuickContainer::SizeRootObjectToView); m_welcomePage->setObjectName(QLatin1String("WelcomePage")); @@ -175,12 +174,10 @@ WelcomeMode::WelcomeMode() layout->addWidget(container); #endif // USE_QUICK_WIDGET - connect(ICore::instance(), &ICore::themeChanged, this, &WelcomeMode::onThemeChanged); - setWidget(m_modeWidget); } -void WelcomeMode::onThemeChanged() +void WelcomeMode::applyTheme() { const QVariantHash creatorTheme = Utils::creatorTheme()->values(); for (auto it = creatorTheme.constBegin(); it != creatorTheme.constEnd(); ++it) |