From 7a320d2472a61784d258ffa8194476dd8e57ad58 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Sun, 11 Aug 2024 04:10:17 +0200 Subject: [PATCH] Fix keybind settings UI functionality --- .../scenes/desktop_settings_scene_keybinds_action.c | 2 ++ .../scenes/desktop_settings_scene_keybinds_action_type.c | 4 ++++ .../scenes/desktop_settings_scene_keybinds_reset.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action.c b/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action.c index c7d96c013..66faff66d 100644 --- a/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action.c +++ b/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action.c @@ -7,6 +7,8 @@ static void DesktopSettingsApp* app = context; desktop_settings_app_set_keybind(app, (const char*)index); + scene_manager_search_and_switch_to_previous_scene( + app->scene_manager, DesktopSettingsAppSceneStart); } void desktop_settings_scene_keybinds_action_on_enter(void* context) { diff --git a/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action_type.c b/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action_type.c index 0ac50faf8..6637d9f2b 100644 --- a/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action_type.c +++ b/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action_type.c @@ -61,12 +61,16 @@ static void furi_record_close(RECORD_STORAGE); if(dialog_file_browser_show(app->dialogs, temp_path, temp_path, &browser_options)) { desktop_settings_app_set_keybind(app, furi_string_get_cstr(temp_path)); + scene_manager_search_and_switch_to_previous_scene( + app->scene_manager, DesktopSettingsAppSceneStart); } furi_string_free(temp_path); break; } case DesktopSettingsAppKeybindActionTypeRemoveKeybind: desktop_settings_app_set_keybind(app, ""); + scene_manager_search_and_switch_to_previous_scene( + app->scene_manager, DesktopSettingsAppSceneStart); break; default: break; 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 79e014890..1e0b483ec 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 @@ -33,6 +33,9 @@ bool desktop_settings_scene_keybinds_reset_on_event(void* context, SceneManagerE case DialogExResultRight: storage_common_remove(furi_record_open(RECORD_STORAGE), DESKTOP_KEYBINDS_PATH); furi_record_close(RECORD_STORAGE); + desktop_keybinds_free(&app->keybinds); + desktop_keybinds_load(furi_record_open(RECORD_DESKTOP), &app->keybinds); + furi_record_close(RECORD_DESKTOP); /* fall through */ case DialogExResultLeft: consumed = scene_manager_previous_scene(app->scene_manager);