summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Portale <alessandro.portale@theqtcompany.com>2016-01-08 12:37:27 +0100
committerAlessandro Portale <alessandro.portale@theqtcompany.com>2016-01-14 08:40:40 +0000
commitcacd014dc2f7ae72c9751e0b7b5f7a6064737493 (patch)
treea08dc8eb13a47b75bcb1dd255cee16a6f433894b
parent9573ead443c8da39c7336043990084fd8784dd6a (diff)
downloadqt-creator-cacd014dc2f7ae72c9751e0b7b5f7a6064737493.tar.gz
Theme: Force new start of Creator when changing the theme
Let's face it. "Live" theme change doesn't work reliably and there is currently no effort to make this work. This change removes the theme change during a Qt Creator run and shows "Restart required" message dialog which we know from the language settings. Change-Id: Ic9d300c5378841905260ff725aa3011717191de7 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-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)