diff --git a/applications/settings/desktop_settings/desktop_settings_app.c b/applications/settings/desktop_settings/desktop_settings_app.c index 81b055def..2b7bd31d8 100644 --- a/applications/settings/desktop_settings/desktop_settings_app.c +++ b/applications/settings/desktop_settings/desktop_settings_app.c @@ -47,6 +47,7 @@ void desktop_settings_app_set_keybind(DesktopSettingsApp* app, const char* value DesktopKeybindKey key = scene_manager_get_scene_state(app->scene_manager, DesktopSettingsAppSceneKeybindsKey); furi_string_set(app->keybinds[type][key], value); + app->save_keybinds = true; } DesktopSettingsApp* desktop_settings_app_alloc(void) { @@ -140,7 +141,9 @@ extern int32_t desktop_settings_app(void* p) { view_dispatcher_run(app->view_dispatcher); - desktop_keybinds_save(desktop, &app->keybinds); + if(app->save_keybinds) { + desktop_keybinds_save(desktop, &app->keybinds); + } desktop_keybinds_free(&app->keybinds); desktop_api_set_settings(desktop, &app->settings); furi_record_close(RECORD_DESKTOP); diff --git a/applications/settings/desktop_settings/desktop_settings_app.h b/applications/settings/desktop_settings/desktop_settings_app.h index d501bfcec..d989426e4 100644 --- a/applications/settings/desktop_settings/desktop_settings_app.h +++ b/applications/settings/desktop_settings/desktop_settings_app.h @@ -59,6 +59,8 @@ typedef struct { bool pincode_buffer_filled; uint32_t pin_menu_idx; + + bool save_keybinds; } DesktopSettingsApp; FuriString* desktop_settings_app_get_keybind(DesktopSettingsApp* app); diff --git a/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_reset.c b/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_reset.c index 1e0b483ec..4acf9daf9 100644 --- a/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_reset.c +++ b/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_reset.c @@ -36,6 +36,7 @@ bool desktop_settings_scene_keybinds_reset_on_event(void* context, SceneManagerE desktop_keybinds_free(&app->keybinds); desktop_keybinds_load(furi_record_open(RECORD_DESKTOP), &app->keybinds); furi_record_close(RECORD_DESKTOP); + app->save_keybinds = false; /* fall through */ case DialogExResultLeft: consumed = scene_manager_previous_scene(app->scene_manager);