diff --git a/apps/onplay.c b/apps/onplay.c index 03981c6310..e51cac478c 100644 --- a/apps/onplay.c +++ b/apps/onplay.c @@ -978,9 +978,17 @@ static int view_cue_item_callback(int action, MENUITEM_FUNCTION(view_cue_item, 0, ID2P(LANG_BROWSE_CUESHEET), view_cue, NULL, view_cue_item_callback, Icon_NOICON); + +static int browse_id3_wrapper(void) +{ + if (browse_id3()) + return GO_TO_ROOT; + return GO_TO_PREVIOUS; +} + /* CONTEXT_WPS items */ -MENUITEM_FUNCTION(browse_id3_item, 0, ID2P(LANG_MENU_SHOW_ID3_INFO), - browse_id3, NULL, NULL, Icon_NOICON); +MENUITEM_FUNCTION(browse_id3_item, MENU_FUNC_CHECK_RETVAL, ID2P(LANG_MENU_SHOW_ID3_INFO), + browse_id3_wrapper, NULL, NULL, Icon_NOICON); #ifdef HAVE_PITCHSCREEN MENUITEM_FUNCTION(pitch_screen_item, 0, ID2P(LANG_PITCH), gui_syncpitchscreen_run, NULL, NULL, Icon_Audio); diff --git a/apps/screens.c b/apps/screens.c index e20f96731c..e49133f8db 100644 --- a/apps/screens.c +++ b/apps/screens.c @@ -774,10 +774,13 @@ bool browse_id3(void) gui_synclist_draw(&id3_lists); while (true) { key = get_action(CONTEXT_LIST,HZ/2); - if(key!=ACTION_NONE && key!=ACTION_UNKNOWN - && !gui_synclist_do_button(&id3_lists, &key,LIST_WRAP_UNLESS_HELD)) + if(!gui_synclist_do_button(&id3_lists, &key,LIST_WRAP_UNLESS_HELD)) { - return(default_event_handler(key) == SYS_USB_CONNECTED); + if (key == ACTION_STD_OK || key == ACTION_STD_CANCEL) + return false; + else if (key == ACTION_STD_MENU || + default_event_handler(key) == SYS_USB_CONNECTED) + return true; } } }