Index: apps/gui/gwps.c =================================================================== --- apps/gui/gwps.c (revision 15892) +++ apps/gui/gwps.c (working copy) @@ -56,6 +56,7 @@ #include "cuesheet.h" #include "ata_idle_notify.h" #include "root_menu.h" +#include "playlist_viewer.h" #if (LCD_DEPTH > 1) || (defined(HAVE_LCD_REMOTE) && (LCD_REMOTE_DEPTH > 1)) #include "backdrop.h" @@ -274,7 +275,53 @@ /* play/pause */ case ACTION_WPS_PLAY: if (global_settings.party_mode) + { + /* In party mode show current playlist instead of pausing. + From playlist, pressing back or play button again returns. + */ + if ( playlist_viewer() ) + { +/* I'm commenting out the following as playlist_viewer() can return true for other reasons + Probably the way to handle this is to query at this point if the USB is connected and then + return + return SYS_USB_CONNECTED; */ + } + + /* NOTE for patch integrator - + + The following three #if/#endif blocks produce unneeded + code on my sansa e200 but I'm assuming they are vital + to some other build as they are replicated in several + other places that return to the wps after viewing another + screen. + + Ideally the code for all of the places that need similar + restorations of the wps could be consolidated perhaps by + making 'restore' an enum that specifies the kind of + restoration required. Future changes would then be + easier - such as eliminating the show_wps_backdrop() if it + proves to be unneeded. + + I'd do the consolidation myself, but having little + experience in this code base at the moment I thought it + best to leave for an expert or for the future. + */ +#if LCD_DEPTH > 1 + show_wps_backdrop(); +#endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_wps_backdrop(); +#endif +#ifdef HAVE_LCD_BITMAP + FOR_NB_SCREENS(i) + { + gui_wps_set_margin(&gui_wps[i]); + } +#endif + + restore = true; break; + } if ( wps_state.paused ) { wps_state.paused = false;