@ -2578,12 +2578,12 @@ void GMainWindow::OnConfigure() {
& GMainWindow : : OnLanguageChanged ) ;
& GMainWindow : : OnLanguageChanged ) ;
const auto result = configure_dialog . exec ( ) ;
const auto result = configure_dialog . exec ( ) ;
if ( result ! = QDialog : : Accepted ) {
if ( result ! = QDialog : : Accepted & & ! UISettings : : values . configuration_applied ) {
return ;
return ;
} else if ( result = = QDialog : : Accepted ) {
configure_dialog . ApplyConfiguration ( ) ;
controller_dialog - > refreshConfiguration ( ) ;
}
}
configure_dialog . ApplyConfiguration ( ) ;
controller_dialog - > refreshConfiguration ( ) ;
InitializeHotkeys ( ) ;
InitializeHotkeys ( ) ;
if ( UISettings : : values . theme ! = old_theme ) {
if ( UISettings : : values . theme ! = old_theme ) {
UpdateUITheme ( ) ;
UpdateUITheme ( ) ;
@ -2598,6 +2598,8 @@ void GMainWindow::OnConfigure() {
game_list - > PopulateAsync ( UISettings : : values . game_dirs ) ;
game_list - > PopulateAsync ( UISettings : : values . game_dirs ) ;
}
}
UISettings : : values . configuration_applied = false ;
config - > Save ( ) ;
config - > Save ( ) ;
if ( ( UISettings : : values . hide_mouse | | Settings : : values . mouse_panning ) & & emulation_running ) {
if ( ( UISettings : : values . hide_mouse | | Settings : : values . mouse_panning ) & & emulation_running ) {
@ -2627,23 +2629,27 @@ void GMainWindow::OpenPerGameConfiguration(u64 title_id, const std::string& file
ConfigurePerGame dialog ( this , title_id ) ;
ConfigurePerGame dialog ( this , title_id ) ;
dialog . LoadFromFile ( v_file ) ;
dialog . LoadFromFile ( v_file ) ;
const auto result = dialog . exec ( ) ;
const auto result = dialog . exec ( ) ;
if ( result = = QDialog : : Accepted ) {
dialog . ApplyConfiguration ( ) ;
const auto reload = UISettings : : values . is_game_list_reload_pending . exchange ( false ) ;
if ( result ! = QDialog : : Accepted & & ! UISettings : : values . configuration_applied ) {
if ( reload ) {
game_list - > PopulateAsync ( UISettings : : values . game_dirs ) ;
}
// Do not cause the global config to write local settings into the config file
const bool is_powered_on = system . IsPoweredOn ( ) ;
Settings : : RestoreGlobalState ( is_powered_on ) ;
if ( ! is_powered_on ) {
config - > Save ( ) ;
}
} else {
Settings : : RestoreGlobalState ( system . IsPoweredOn ( ) ) ;
Settings : : RestoreGlobalState ( system . IsPoweredOn ( ) ) ;
return ;
} else if ( result = = QDialog : : Accepted ) {
dialog . ApplyConfiguration ( ) ;
}
const auto reload = UISettings : : values . is_game_list_reload_pending . exchange ( false ) ;
if ( reload ) {
game_list - > PopulateAsync ( UISettings : : values . game_dirs ) ;
}
// Do not cause the global config to write local settings into the config file
const bool is_powered_on = system . IsPoweredOn ( ) ;
Settings : : RestoreGlobalState ( is_powered_on ) ;
UISettings : : values . configuration_applied = false ;
if ( ! is_powered_on ) {
config - > Save ( ) ;
}
}
}
}