diff options
Diffstat (limited to 'apps/gui/statusbar-skinned.c')
| -rw-r--r-- | apps/gui/statusbar-skinned.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/apps/gui/statusbar-skinned.c b/apps/gui/statusbar-skinned.c index 0902950..af02b9b 100644 --- a/apps/gui/statusbar-skinned.c +++ b/apps/gui/statusbar-skinned.c @@ -86,15 +86,29 @@ void sb_skin_data_load(enum screen_type screen, const char *buf, bool isfile) } /* hide this viewport, forever */ vp->hidden_flags = VP_NEVER_VISIBLE; + sb_set_info_vp(screen, VP_INFO_LABEL|VP_DEFAULT_LABEL); } if (!success && isfile) sb_create_from_settings(screen); } - +static char infovp_label[NB_SCREENS]; +static char oldinfovp_label[NB_SCREENS]; +void sb_set_info_vp(enum screen_type screen, char label) +{ + infovp_label[screen] = label; +} + struct viewport *sb_skin_get_info_vp(enum screen_type screen) { - return &find_viewport(VP_INFO_LABEL, sb_skin[screen].data)->vp; + if (oldinfovp_label[screen] != infovp_label[screen]) + { + /* UI viewport changed, so force a redraw */ + oldinfovp_label[screen] = infovp_label[screen]; + viewportmanager_theme_enable(screen, false, NULL); + viewportmanager_theme_undo(screen, true); + } + return &find_viewport(infovp_label[screen], sb_skin[screen].data)->vp; } #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1) |