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() {