diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp index a9327a663d9..12db1cbda69 100644 --- a/src/libs/utils/stylehelper.cpp +++ b/src/libs/utils/stylehelper.cpp @@ -38,7 +38,7 @@ static int range(float x, int min, int max) namespace Utils { -static StyleHelper::ToolbarStyle s_toolbarStyle = StyleHelper::defaultToolbarStyle; +static StyleHelper::ToolbarStyle s_toolbarStyle = StyleHelper::ToolbarStyle::Compact; // Invalid by default, setBaseColor needs to be called at least once static QColor s_baseColor; static QColor s_requestedBaseColor; @@ -95,6 +95,11 @@ StyleHelper::ToolbarStyle StyleHelper::toolbarStyle() return s_toolbarStyle; } +StyleHelper::ToolbarStyle StyleHelper::defaultToolbarStyle() +{ + return creatorTheme() ? creatorTheme()->defaultToolbarStyle() : ToolbarStyle::Compact; +} + QColor StyleHelper::notTooBrightHighlightColor() { QColor highlightColor = QApplication::palette().highlight().color(); diff --git a/src/libs/utils/stylehelper.h b/src/libs/utils/stylehelper.h index cb7775c1a64..d774caaae90 100644 --- a/src/libs/utils/stylehelper.h +++ b/src/libs/utils/stylehelper.h @@ -77,7 +77,6 @@ enum class ToolbarStyle { Compact, Relaxed, }; -constexpr ToolbarStyle defaultToolbarStyle = ToolbarStyle::Compact; // Keep in sync with: // SyleHelper::uiFontMetrics, ICore::uiConfigInformation, tst_manual_widgets_uifonts::main @@ -105,6 +104,7 @@ enum UiElement { QTCREATOR_UTILS_EXPORT int navigationWidgetHeight(); QTCREATOR_UTILS_EXPORT void setToolbarStyle(ToolbarStyle style); QTCREATOR_UTILS_EXPORT ToolbarStyle toolbarStyle(); +QTCREATOR_UTILS_EXPORT ToolbarStyle defaultToolbarStyle(); QTCREATOR_UTILS_EXPORT QPalette sidebarFontPalette(const QPalette &original); // This is our color table, all colors derive from baseColor diff --git a/src/libs/utils/theme/theme.cpp b/src/libs/utils/theme/theme.cpp index 3f3fa7370fa..c5b2665cc0c 100644 --- a/src/libs/utils/theme/theme.cpp +++ b/src/libs/utils/theme/theme.cpp @@ -6,6 +6,7 @@ #include "../hostosinfo.h" #include "../qtcassert.h" #include "filepath.h" +#include "stylehelper.h" #ifdef Q_OS_MACOS #import "theme_mac.h" #endif @@ -21,6 +22,7 @@ static Theme *m_creatorTheme = nullptr; static std::optional m_initialPalette; ThemePrivate::ThemePrivate() + : defaultToolbarStyle(StyleHelper::ToolbarStyle::Compact) { const QMetaObject &m = Theme::staticMetaObject; colors.resize (m.enumerator(m.indexOfEnumerator("Color")).keyCount()); @@ -130,6 +132,11 @@ QString Theme::defaultTextEditorColorScheme() const return d->defaultTextEditorColorScheme; } +StyleHelper::ToolbarStyle Theme::defaultToolbarStyle() const +{ + return d->defaultToolbarStyle; +} + QString Theme::id() const { return d->id; @@ -228,6 +235,9 @@ void Theme::readSettingsInternal(QSettings &settings) d->preferredStyles.removeAll(QString()); d->defaultTextEditorColorScheme = settings.value(QLatin1String("DefaultTextEditorColorScheme")).toString(); + d->defaultToolbarStyle = + settings.value(QLatin1String("DefaultToolbarStyle")).toString() == "Relaxed" + ? StyleHelper::ToolbarStyle::Relaxed : StyleHelper::ToolbarStyle::Compact; d->enforceAccentColorOnMacOS = settings.value("EnforceAccentColorOnMacOS").toString(); } diff --git a/src/libs/utils/theme/theme.h b/src/libs/utils/theme/theme.h index d1a358ad29a..a862e9bef04 100644 --- a/src/libs/utils/theme/theme.h +++ b/src/libs/utils/theme/theme.h @@ -18,6 +18,10 @@ QT_END_NAMESPACE namespace Utils { +namespace StyleHelper { +enum class ToolbarStyle; +} + class ThemePrivate; class QTCREATOR_UTILS_EXPORT Theme : public QObject @@ -530,6 +534,7 @@ public: QPalette palette() const; QStringList preferredStyles() const; QString defaultTextEditorColorScheme() const; + StyleHelper::ToolbarStyle defaultToolbarStyle() const; QString id() const; QString filePath() const; diff --git a/src/libs/utils/theme/theme_p.h b/src/libs/utils/theme/theme_p.h index 4c751264401..a82843758ae 100644 --- a/src/libs/utils/theme/theme_p.h +++ b/src/libs/utils/theme/theme_p.h @@ -12,6 +12,10 @@ namespace Utils { +namespace StyleHelper { +enum class ToolbarStyle; +} + class QTCREATOR_UTILS_EXPORT ThemePrivate { public: @@ -22,6 +26,7 @@ public: QString displayName; QStringList preferredStyles; QString defaultTextEditorColorScheme; + StyleHelper::ToolbarStyle defaultToolbarStyle; QString enforceAccentColorOnMacOS; QList > colors; QList imageFiles; diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp index 8e42090b687..586d6a07bb6 100644 --- a/src/plugins/coreplugin/generalsettings.cpp +++ b/src/plugins/coreplugin/generalsettings.cpp @@ -306,7 +306,7 @@ void GeneralSettingsWidget::apply() if (const auto newStyle = m_toolbarStyleBox->currentData().value(); newStyle != StyleHelper::toolbarStyle()) { ICore::settings()->setValueWithDefault(settingsKeyToolbarStyle, int(newStyle), - int(StyleHelper::defaultToolbarStyle)); + int(StyleHelper::defaultToolbarStyle())); StyleHelper::setToolbarStyle(newStyle); QStyle *applicationStyle = QApplication::style(); for (QWidget *widget : QApplication::allWidgets()) @@ -383,11 +383,11 @@ void GeneralSettingsWidget::setCodecForLocale(const QByteArray &codec) StyleHelper::ToolbarStyle toolbarStylefromSettings() { if (!ExtensionSystem::PluginManager::instance()) // May happen in tests - return StyleHelper::defaultToolbarStyle; + return StyleHelper::defaultToolbarStyle(); return StyleHelper::ToolbarStyle( ICore::settings()->value(settingsKeyToolbarStyle, - int(StyleHelper::defaultToolbarStyle)).toInt()); + int(StyleHelper::defaultToolbarStyle())).toInt()); } void GeneralSettingsWidget::fillToolbarStyleBox() const