diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c index 8e48ac261e..cf81f7d009 100644 --- a/apps/gui/viewport.c +++ b/apps/gui/viewport.c @@ -57,7 +57,6 @@ #include "language.h" #include "statusbar-skinned.h" #include "skin_engine/skin_engine.h" -#include "skin_engine/wps_internals.h" #include "debug.h" #define VPSTACK_DEPTH 16 @@ -123,17 +122,7 @@ static void toggle_theme(enum screen_type screen, bool force) /* remove the left overs from the previous screen. * could cause a tiny flicker. Redo your screen code if that happens */ #ifdef HAVE_BACKDROP_IMAGE - int backdrop_id = sb_get_backdrop(screen); - if (get_current_activity() == ACTIVITY_WPS) - { - struct wps_data *sbs = skin_get_gwps(CUSTOM_STATUSBAR, screen)->data; - struct wps_data *wps = skin_get_gwps(WPS, screen)->data; - /* Extra framebuffer shared between WPS and SBS; - prevents flashing previous backdrop: */ - if (wps->use_extra_framebuffer && sbs->use_extra_framebuffer) - backdrop_id = -1; - } - skin_backdrop_show(backdrop_id); + skin_backdrop_show(sb_get_backdrop(screen)); #endif if (LIKELY(after_boot[screen]) && (!was_enabled[screen] || force)) { diff --git a/apps/gui/wps.c b/apps/gui/wps.c index 0e541fd233..530307cb50 100644 --- a/apps/gui/wps.c +++ b/apps/gui/wps.c @@ -542,7 +542,18 @@ static void gwps_leave_wps(bool theme_enabled) struct gui_wps *gwps = skin_get_gwps(WPS, i); gwps->display->scroll_stop(); if (theme_enabled) + { +#ifdef HAVE_BACKDROP_IMAGE + skin_backdrop_show(sb_get_backdrop(i)); + + /* The following is supposed to erase any traces of %VB + viewports drawn by the WPS. May need further thought... */ + struct wps_data *sbs = skin_get_gwps(CUSTOM_STATUSBAR, i)->data; + if (gwps->data->use_extra_framebuffer && sbs->use_extra_framebuffer) + skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_ALL); +#endif viewportmanager_theme_undo(i, skin_has_sbs(gwps)); + } } #if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP)