summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/coreplugin/icore.h1
-rw-r--r--src/plugins/coreplugin/themesettingswidget.cpp31
-rw-r--r--src/plugins/welcome/welcomeplugin.cpp9
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)