diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index cc7de413f9..e7fac7bfc3 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -224,11 +224,6 @@ static int menu_settings_iterate(unsigned action, break; case MENU_ACTION_CANCEL: -#ifdef HAVE_XMB - file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); - file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); - driver.menu->selection_ptr_old = driver.menu->selection_ptr; -#endif apply_deferred_settings(); menu_list_pop_stack(driver.menu->menu_list); break; @@ -237,11 +232,6 @@ static int menu_settings_iterate(unsigned action, 0, driver.menu->selection_ptr); break; case MENU_ACTION_OK: -#ifdef HAVE_XMB - file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); - file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); - driver.menu->selection_ptr_old = driver.menu->selection_ptr; -#endif if (cbs && cbs->action_ok) return cbs->action_ok(path, label, type, driver.menu->selection_ptr); /* fall-through */ @@ -646,20 +636,10 @@ static int menu_common_iterate(unsigned action) break; case MENU_ACTION_CANCEL: -#ifdef HAVE_XMB - file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); - file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); - driver.menu->selection_ptr_old = driver.menu->selection_ptr; -#endif menu_list_pop_stack(driver.menu->menu_list); break; case MENU_ACTION_OK: -#ifdef HAVE_XMB - file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); - file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); - driver.menu->selection_ptr_old = driver.menu->selection_ptr; -#endif ret = menu_action_ok(cbs); break; diff --git a/frontend/menu/menu_list.c b/frontend/menu/menu_list.c index c9939811a8..f89da933b4 100644 --- a/frontend/menu/menu_list.c +++ b/frontend/menu/menu_list.c @@ -164,6 +164,11 @@ void menu_list_pop_stack(menu_list_t *list) if (file_list_get_size(list->menu_stack) > 1) { +#ifdef HAVE_XMB + file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); + file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); + driver.menu->selection_ptr_old = driver.menu->selection_ptr; +#endif menu_list_pop(list->menu_stack, &driver.menu->selection_ptr); driver.menu->need_refresh = true; } @@ -278,6 +283,13 @@ void menu_list_push_stack_refresh(menu_list_t *list, { if (!list) return; + +#ifdef HAVE_XMB + file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); + file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); + driver.menu->selection_ptr_old = driver.menu->selection_ptr; +#endif + menu_list_push_stack(list, path, label, type, directory_ptr); menu_navigation_clear(driver.menu, true); driver.menu->need_refresh = true;