diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index bfe620e278..5bce843e5d 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1389,7 +1389,8 @@ static void xmb_context_reset(void *data) strlcat(content_texturepath, core_id, sizeof(content_texturepath)); strlcat(content_texturepath, "-content.png", sizeof(content_texturepath)); - node->alpha = (i == xmb->active_category) ? xmb->c_active_alpha : xmb->c_passive_alpha; + node->alpha = (i == xmb->active_category) ? xmb->c_active_alpha + : (xmb->depth <= 1) ? xmb->c_passive_alpha : 0; node->zoom = (i == xmb->active_category) ? xmb->c_active_zoom : xmb->c_passive_zoom; node->icon = xmb_png_texture_load(texturepath); node->content_icon = xmb_png_texture_load(content_texturepath); @@ -1589,6 +1590,8 @@ static void xmb_toggle(bool menu_on) if (!xmb) return; + xmb->depth = file_list_get_size(driver.menu->menu_list->menu_stack); + if (menu_on) { add_tween(XMB_DELAY, 1.0f, &xmb->alpha, &inOutQuad, NULL); @@ -1604,6 +1607,8 @@ static void xmb_toggle(bool menu_on) node->alpha = (i == xmb->active_category) ? xmb->c_active_alpha : (xmb->depth <= 1) ? xmb->c_passive_alpha : 0; + node->zoom = (i == xmb->active_category) ? xmb->c_active_zoom + : xmb->c_passive_zoom; } } } diff --git a/menu/menu_entries_cbs.c b/menu/menu_entries_cbs.c index 84e7af68c4..d182feac58 100644 --- a/menu/menu_entries_cbs.c +++ b/menu/menu_entries_cbs.c @@ -1842,6 +1842,7 @@ static int action_toggle_mainmenu(unsigned type, const char *label, { if (!strcmp(driver.menu_ctx->ident, "xmb")) { + driver.menu->selection_ptr = 0; switch (action) { case MENU_ACTION_LEFT: @@ -3501,7 +3502,7 @@ static int action_iterate_help(const char *label, unsigned action) driver.menu_ctx->render_messagebox(msg); if (action == MENU_ACTION_OK) - menu_list_pop_stack(driver.menu->menu_list); + menu_list_pop(driver.menu->menu_list->menu_stack, NULL); return 0; } @@ -3554,7 +3555,7 @@ static int action_iterate_info(const char *label, unsigned action) } if (action == MENU_ACTION_OK) - menu_list_pop_stack(driver.menu->menu_list); + menu_list_pop(driver.menu->menu_list->menu_stack, &driver.menu->selection_ptr); return 0; } @@ -4322,7 +4323,9 @@ static void menu_entries_cbs_init_bind_toggle(menu_file_list_cbs_t *cbs, case MENU_FILE_USE_DIRECTORY: case MENU_FILE_PLAYLIST_ENTRY: case MENU_FILE_DOWNLOAD_CORE: - if (!strcmp(menu_label, "Horizontal Menu")) + case MENU_SETTING_GROUP: + if (!strcmp(menu_label, "Horizontal Menu") + || !strcmp(menu_label, "Main Menu")) cbs->action_toggle = action_toggle_mainmenu; else cbs->action_toggle = action_toggle_scroll; diff --git a/settings_data.c b/settings_data.c index c7cadff9e3..15a012f330 100644 --- a/settings_data.c +++ b/settings_data.c @@ -2902,7 +2902,7 @@ void setting_data_get_label(void *data, char *type_str, size_t type_str_size, unsigned *w, unsigned type, const char *menu_label, const char *label, unsigned idx) { - file_list_t *list = (file_list_t*)data; + file_list_t *list = (file_list_t*)data; rarch_setting_t *setting_data = NULL; rarch_setting_t *setting = NULL; @@ -2917,6 +2917,9 @@ void setting_data_get_label(void *data, char *type_str, label, idx)) == 0) return; + if (!label) + return; + #if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL) if ((!strcmp(menu_label, "Shader Options") || !strcmp(menu_label, "video_shader_parameters") ||