summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2025-11-14 14:59:14 -0500
committerGitHub <noreply@github.com>2025-11-14 14:59:14 -0500
commit5dd18246e7bbc46d13ba19d684344f7717dfbae8 (patch)
tree03b31e049e8f5cb1842d290f60c008a0df3f1fd2 /Source/Core
parent0c349306e3dd00864707a5ca7769c4e7afc6278e (diff)
parent71e15c2875f36458c8f29ee160f01606967bcd13 (diff)
Merge pull request #13919 from cristian64/revise_builtin_styles
DolphinQt: Add Fusion-based styles.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinQt/Settings.cpp174
-rw-r--r--Source/Core/DolphinQt/Settings.h5
-rw-r--r--Source/Core/DolphinQt/Settings/InterfacePane.cpp7
3 files changed, 176 insertions, 10 deletions
diff --git a/Source/Core/DolphinQt/Settings.cpp b/Source/Core/DolphinQt/Settings.cpp
index dcddf6a21c..76363d8e10 100644
--- a/Source/Core/DolphinQt/Settings.cpp
+++ b/Source/Core/DolphinQt/Settings.cpp
@@ -160,6 +160,17 @@ bool Settings::IsThemeDark()
void Settings::ApplyStyle()
{
const StyleType style_type = GetStyleType();
+
+ {
+ const bool use_fusion{style_type == StyleType::FusionLight ||
+ style_type == StyleType::FusionDarkGray ||
+ style_type == StyleType::FusionDark};
+ static const QString s_initial_style_name{QApplication::style()->name()};
+ const QString style_name{use_fusion ? QStringLiteral("fusion") : s_initial_style_name};
+ if (QApplication::style()->name() != style_name)
+ QApplication::setStyle(style_name);
+ }
+
const QString stylesheet_name = GetUserStyleName();
QString stylesheet_contents;
@@ -174,12 +185,155 @@ void Settings::ApplyStyle()
stylesheet_contents = QString::fromUtf8(stylesheet.readAll().data());
}
+ QPalette palette;
+
+ if (style_type == StyleType::FusionLight)
+ {
+ palette.setColor(QPalette::All, QPalette::Window, QColor(239, 239, 239));
+ palette.setColor(QPalette::Disabled, QPalette::Window, QColor(239, 239, 239));
+ palette.setColor(QPalette::All, QPalette::WindowText, QColor(0, 0, 0));
+ palette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(190, 190, 190));
+ palette.setColor(QPalette::All, QPalette::Base, QColor(255, 255, 255));
+ palette.setColor(QPalette::Disabled, QPalette::Base, QColor(239, 239, 239));
+ palette.setColor(QPalette::All, QPalette::AlternateBase, QColor(247, 247, 247));
+ palette.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(247, 247, 247));
+ palette.setColor(QPalette::All, QPalette::ToolTipBase, QColor(255, 255, 220));
+ palette.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(255, 255, 220));
+ palette.setColor(QPalette::All, QPalette::ToolTipText, QColor(0, 0, 0));
+ palette.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(0, 0, 0));
+ palette.setColor(QPalette::All, QPalette::PlaceholderText, QColor(119, 119, 119));
+ palette.setColor(QPalette::Disabled, QPalette::PlaceholderText, QColor(119, 119, 119));
+ palette.setColor(QPalette::All, QPalette::Text, QColor(0, 0, 0));
+ palette.setColor(QPalette::Disabled, QPalette::Text, QColor(190, 190, 190));
+ palette.setColor(QPalette::All, QPalette::Button, QColor(239, 239, 239));
+ palette.setColor(QPalette::Disabled, QPalette::Button, QColor(239, 239, 239));
+ palette.setColor(QPalette::All, QPalette::ButtonText, QColor(0, 0, 0));
+ palette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(190, 190, 190));
+ palette.setColor(QPalette::All, QPalette::BrightText, QColor(255, 255, 255));
+ palette.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
+ palette.setColor(QPalette::All, QPalette::Light, QColor(255, 255, 255));
+ palette.setColor(QPalette::Disabled, QPalette::Light, QColor(255, 255, 255));
+ palette.setColor(QPalette::All, QPalette::Midlight, QColor(202, 202, 202));
+ palette.setColor(QPalette::Disabled, QPalette::Midlight, QColor(202, 202, 202));
+ palette.setColor(QPalette::All, QPalette::Dark, QColor(159, 159, 159));
+ palette.setColor(QPalette::Disabled, QPalette::Dark, QColor(190, 190, 190));
+ palette.setColor(QPalette::All, QPalette::Mid, QColor(184, 184, 184));
+ palette.setColor(QPalette::Disabled, QPalette::Mid, QColor(184, 184, 184));
+ palette.setColor(QPalette::All, QPalette::Shadow, QColor(118, 118, 118));
+ palette.setColor(QPalette::Disabled, QPalette::Shadow, QColor(177, 177, 177));
+ palette.setColor(QPalette::All, QPalette::Highlight, QColor(48, 140, 198));
+ palette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(145, 145, 145));
+#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
+ palette.setColor(QPalette::All, QPalette::Accent, QColor(48, 140, 198));
+ palette.setColor(QPalette::Disabled, QPalette::Accent, QColor(145, 145, 145).darker());
+#endif
+ palette.setColor(QPalette::All, QPalette::HighlightedText, QColor(255, 255, 255));
+ palette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(255, 255, 255));
+ palette.setColor(QPalette::All, QPalette::Link, QColor(0, 0, 255));
+ palette.setColor(QPalette::Disabled, QPalette::Link, QColor(0, 0, 255));
+ palette.setColor(QPalette::All, QPalette::LinkVisited, QColor(255, 0, 255));
+ palette.setColor(QPalette::Disabled, QPalette::LinkVisited, QColor(255, 0, 255));
+ }
+ else if (style_type == StyleType::FusionDarkGray)
+ {
+ palette.setColor(QPalette::All, QPalette::Window, QColor(50, 50, 50));
+ palette.setColor(QPalette::Disabled, QPalette::Window, QColor(55, 55, 55));
+ palette.setColor(QPalette::All, QPalette::WindowText, QColor(200, 200, 200));
+ palette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(108, 108, 108));
+ palette.setColor(QPalette::All, QPalette::Base, QColor(25, 25, 25));
+ palette.setColor(QPalette::Disabled, QPalette::Base, QColor(30, 30, 30));
+ palette.setColor(QPalette::All, QPalette::AlternateBase, QColor(38, 38, 38));
+ palette.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(42, 42, 42));
+ palette.setColor(QPalette::All, QPalette::ToolTipBase, QColor(45, 45, 45));
+ palette.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(45, 45, 45));
+ palette.setColor(QPalette::All, QPalette::ToolTipText, QColor(200, 200, 200));
+ palette.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(200, 200, 200));
+ palette.setColor(QPalette::All, QPalette::PlaceholderText, QColor(90, 90, 90));
+ palette.setColor(QPalette::Disabled, QPalette::PlaceholderText, QColor(90, 90, 90));
+ palette.setColor(QPalette::All, QPalette::Text, QColor(200, 200, 200));
+ palette.setColor(QPalette::Disabled, QPalette::Text, QColor(108, 108, 108));
+ palette.setColor(QPalette::All, QPalette::Button, QColor(54, 54, 54));
+ palette.setColor(QPalette::Disabled, QPalette::Button, QColor(54, 54, 54));
+ palette.setColor(QPalette::All, QPalette::ButtonText, QColor(200, 200, 200));
+ palette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(108, 108, 108));
+ palette.setColor(QPalette::All, QPalette::BrightText, QColor(75, 75, 75));
+ palette.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
+ palette.setColor(QPalette::All, QPalette::Light, QColor(26, 26, 26));
+ palette.setColor(QPalette::Disabled, QPalette::Light, QColor(26, 26, 26));
+ palette.setColor(QPalette::All, QPalette::Midlight, QColor(40, 40, 40));
+ palette.setColor(QPalette::Disabled, QPalette::Midlight, QColor(40, 40, 40));
+ palette.setColor(QPalette::All, QPalette::Dark, QColor(108, 108, 108));
+ palette.setColor(QPalette::Disabled, QPalette::Dark, QColor(108, 108, 108));
+ palette.setColor(QPalette::All, QPalette::Mid, QColor(71, 71, 71));
+ palette.setColor(QPalette::Disabled, QPalette::Mid, QColor(71, 71, 71));
+ palette.setColor(QPalette::All, QPalette::Shadow, QColor(25, 25, 25));
+ palette.setColor(QPalette::Disabled, QPalette::Shadow, QColor(37, 37, 37));
+ palette.setColor(QPalette::All, QPalette::Highlight, QColor(45, 140, 225));
+ palette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(45, 140, 225).darker());
+#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
+ palette.setColor(QPalette::All, QPalette::Accent, QColor(45, 140, 225));
+ palette.setColor(QPalette::Disabled, QPalette::Accent, QColor(45, 140, 225).darker());
+#endif
+ palette.setColor(QPalette::All, QPalette::HighlightedText, QColor(255, 255, 255));
+ palette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(40, 40, 40));
+ palette.setColor(QPalette::All, QPalette::Link, QColor(40, 130, 220));
+ palette.setColor(QPalette::Disabled, QPalette::Link, QColor(40, 130, 220).darker());
+ palette.setColor(QPalette::All, QPalette::LinkVisited, QColor(110, 70, 150));
+ palette.setColor(QPalette::Disabled, QPalette::LinkVisited, QColor(110, 70, 150).darker());
+ }
+ else if (style_type == StyleType::FusionDark)
+ {
+ palette.setColor(QPalette::All, QPalette::Window, QColor(22, 22, 22));
+ palette.setColor(QPalette::Disabled, QPalette::Window, QColor(30, 30, 30));
+ palette.setColor(QPalette::All, QPalette::WindowText, QColor(180, 180, 180));
+ palette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(90, 90, 90));
+ palette.setColor(QPalette::All, QPalette::Base, QColor(35, 35, 35));
+ palette.setColor(QPalette::Disabled, QPalette::Base, QColor(30, 30, 30));
+ palette.setColor(QPalette::All, QPalette::AlternateBase, QColor(40, 40, 40));
+ palette.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(35, 35, 35));
+ palette.setColor(QPalette::All, QPalette::ToolTipBase, QColor(0, 0, 0));
+ palette.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(0, 0, 0));
+ palette.setColor(QPalette::All, QPalette::ToolTipText, QColor(170, 170, 170));
+ palette.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(170, 170, 170));
+ palette.setColor(QPalette::All, QPalette::PlaceholderText, QColor(100, 100, 100));
+ palette.setColor(QPalette::Disabled, QPalette::PlaceholderText, QColor(100, 100, 100));
+ palette.setColor(QPalette::All, QPalette::Text, QColor(200, 200, 200));
+ palette.setColor(QPalette::Disabled, QPalette::Text, QColor(90, 90, 90));
+ palette.setColor(QPalette::All, QPalette::Button, QColor(30, 30, 30));
+ palette.setColor(QPalette::Disabled, QPalette::Button, QColor(20, 20, 20));
+ palette.setColor(QPalette::All, QPalette::ButtonText, QColor(180, 180, 180));
+ palette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(90, 90, 90));
+ palette.setColor(QPalette::All, QPalette::BrightText, QColor(75, 75, 75));
+ palette.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
+ palette.setColor(QPalette::All, QPalette::Light, QColor(0, 0, 0));
+ palette.setColor(QPalette::Disabled, QPalette::Light, QColor(0, 0, 0));
+ palette.setColor(QPalette::All, QPalette::Midlight, QColor(40, 40, 40));
+ palette.setColor(QPalette::Disabled, QPalette::Midlight, QColor(40, 40, 40));
+ palette.setColor(QPalette::All, QPalette::Dark, QColor(90, 90, 90));
+ palette.setColor(QPalette::Disabled, QPalette::Dark, QColor(90, 90, 90));
+ palette.setColor(QPalette::All, QPalette::Mid, QColor(60, 60, 60));
+ palette.setColor(QPalette::Disabled, QPalette::Mid, QColor(60, 60, 60));
+ palette.setColor(QPalette::All, QPalette::Shadow, QColor(10, 10, 10));
+ palette.setColor(QPalette::Disabled, QPalette::Shadow, QColor(20, 20, 20));
+ palette.setColor(QPalette::All, QPalette::Highlight, QColor(35, 130, 200));
+ palette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(35, 130, 200).darker());
+#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
+ palette.setColor(QPalette::All, QPalette::Accent, QColor(35, 130, 200));
+ palette.setColor(QPalette::Disabled, QPalette::Accent, QColor(35, 130, 200).darker());
+#endif
+ palette.setColor(QPalette::All, QPalette::HighlightedText, QColor(240, 240, 240));
+ palette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(35, 35, 35));
+ palette.setColor(QPalette::All, QPalette::Link, QColor(40, 130, 220));
+ palette.setColor(QPalette::Disabled, QPalette::Link, QColor(40, 130, 220).darker());
+ palette.setColor(QPalette::All, QPalette::LinkVisited, QColor(110, 70, 150));
+ palette.setColor(QPalette::Disabled, QPalette::LinkVisited, QColor(110, 70, 150).darker());
+ }
#ifdef _WIN32
// Unlike other OSes we don't automatically get a default dark theme on Windows.
// We manually load a dark palette for our included "(Dark)" style,
// and for *any* external style when the system is in "Dark" mode.
// Unfortunately it doesn't seem trivial to load a palette based on the stylesheet itself.
- if (style_type == StyleType::Dark || (style_type != StyleType::Light && IsSystemDark()))
+ else if (style_type == StyleType::Dark || (style_type != StyleType::Light && IsSystemDark()))
{
if (stylesheet_contents.isEmpty())
{
@@ -188,7 +342,7 @@ void Settings::ApplyStyle()
stylesheet_contents = QString::fromUtf8(file.readAll().data());
}
- QPalette palette = qApp->style()->standardPalette();
+ palette = qApp->style()->standardPalette();
palette.setColor(QPalette::Window, QColor(32, 32, 32));
palette.setColor(QPalette::WindowText, QColor(220, 220, 220));
palette.setColor(QPalette::Base, QColor(32, 32, 32));
@@ -202,20 +356,19 @@ void Settings::ApplyStyle()
palette.setColor(QPalette::HighlightedText, QColor(255, 255, 255));
palette.setColor(QPalette::Link, QColor(100, 160, 220));
palette.setColor(QPalette::LinkVisited, QColor(100, 160, 220));
- qApp->setPalette(palette);
}
+#endif
else
{
- // reset any palette changes that may exist from a previously set dark mode
if (s_default_palette)
- qApp->setPalette(*s_default_palette);
+ palette = *s_default_palette;
}
-#endif
+
+ qApp->setPalette(palette);
// Define tooltips style if not already defined
if (!stylesheet_contents.contains(QStringLiteral("QToolTip"), Qt::CaseSensitive))
{
- const QPalette& palette = qApp->palette();
QColor window_color;
QColor text_color;
QColor unused_text_emphasis_color;
@@ -223,11 +376,14 @@ void Settings::ApplyStyle()
GetToolTipStyle(window_color, text_color, unused_text_emphasis_color, border_color, palette,
palette);
+ const int padding{QFontMetrics(QFont()).height() / 2};
+
const auto tooltip_stylesheet =
- QStringLiteral("QToolTip { background-color: #%1; color: #%2; padding: 8px; "
- "border: 1px; border-style: solid; border-color: #%3; }")
+ QStringLiteral("QToolTip { background-color: #%1; color: #%2; padding: %3px; "
+ "border: 1px; border-style: solid; border-color: #%4; }")
.arg(window_color.rgba(), 0, 16)
.arg(text_color.rgba(), 0, 16)
+ .arg(padding)
.arg(border_color.rgba(), 0, 16);
stylesheet_contents.append(QStringLiteral("%1").arg(tooltip_stylesheet));
}
diff --git a/Source/Core/DolphinQt/Settings.h b/Source/Core/DolphinQt/Settings.h
index ff3f88edf3..e91fb130fa 100644
--- a/Source/Core/DolphinQt/Settings.h
+++ b/Source/Core/DolphinQt/Settings.h
@@ -66,9 +66,12 @@ public:
Light = 1,
Dark = 2,
User = 3,
+ FusionLight = 4,
+ FusionDarkGray = 5,
+ FusionDark = 6,
MinValue = 0,
- MaxValue = 3,
+ MaxValue = 6,
};
void SetStyleType(StyleType type);
diff --git a/Source/Core/DolphinQt/Settings/InterfacePane.cpp b/Source/Core/DolphinQt/Settings/InterfacePane.cpp
index 2c97269483..f12689cb31 100644
--- a/Source/Core/DolphinQt/Settings/InterfacePane.cpp
+++ b/Source/Core/DolphinQt/Settings/InterfacePane.cpp
@@ -157,6 +157,13 @@ void InterfacePane::CreateUI()
m_combobox_userstyle->addItem(tr("(Dark)"), static_cast<int>(Settings::StyleType::Dark));
#endif
+ m_combobox_userstyle->addItem(tr("(Fusion Light)"),
+ static_cast<int>(Settings::StyleType::FusionLight));
+ m_combobox_userstyle->addItem(tr("(Fusion Dark Gray)"),
+ static_cast<int>(Settings::StyleType::FusionDarkGray));
+ m_combobox_userstyle->addItem(tr("(Fusion Dark)"),
+ static_cast<int>(Settings::StyleType::FusionDark));
+
for (const std::string& path : userstyle_search_results)
{
const QFileInfo file_info(QString::fromStdString(path));