From e2dbef12c7623e645c6e5388e964e88ab527d32d Mon Sep 17 00:00:00 2001 From: tomboylover93 <95257311+tomboylover93@users.noreply.github.com> Date: Sun, 22 Dec 2024 11:49:53 -0300 Subject: [PATCH] Make icon colors update in real time Reference: https://github.com/rainmakerv3/shadPS4/commit/64df298e5af6e895cca53e4e2724baa90ea6b314 --- src/qt_gui/main_window.cpp | 27 +++++++++++++++++++++++++++ src/qt_gui/settings_dialog.cpp | 1 - 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index 5e6a8d868..cabb7baa2 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -1167,5 +1167,32 @@ bool MainWindow::eventFilter(QObject* obj, QEvent* event) { } } } + if (event->type() == QEvent::ApplicationPaletteChange) { + if (ui->setThemeSystem->isChecked()) { + + bool isSystemDarkMode; + +#ifdef __linux__ + const QPalette defaultPalette; + const auto text = defaultPalette.color(QPalette::WindowText); + const auto window = defaultPalette.color(QPalette::Window); + isSystemDarkMode = (text.lightness() > window.lightness()); +#else + isSystemDarkMode = + (QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark); +#endif + if (isSystemDarkMode) { + if (isIconBlack) { + SetUiIcons(false); + isIconBlack = false; + } + } else { + if (!isIconBlack) { + SetUiIcons(true); + isIconBlack = true; + } + } + } + } return QMainWindow::eventFilter(obj, event); } \ No newline at end of file diff --git a/src/qt_gui/settings_dialog.cpp b/src/qt_gui/settings_dialog.cpp index e994acef3..1cfae7210 100644 --- a/src/qt_gui/settings_dialog.cpp +++ b/src/qt_gui/settings_dialog.cpp @@ -538,7 +538,6 @@ void SettingsDialog::UpdateSettings() { foreach (QWidget* widget, QApplication::topLevelWidgets()) { widget->update(); } - QCoreApplication::processEvents(); } void SettingsDialog::ResetInstallFolders() {