summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/skin_engine/skin_display.c26
-rw-r--r--apps/gui/skin_engine/wps_internals.h1
-rw-r--r--apps/gui/statusbar-skinned.c2
3 files changed, 14 insertions, 15 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c
index 845ea18608..8ea5dc5ecb 100644
--- a/apps/gui/skin_engine/skin_display.c
+++ b/apps/gui/skin_engine/skin_display.c
@@ -1123,11 +1123,10 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode)
1123 struct skin_viewport *skin_viewport = 1123 struct skin_viewport *skin_viewport =
1124 (struct skin_viewport *)viewport_list->token->value.data; 1124 (struct skin_viewport *)viewport_list->token->value.data;
1125 unsigned vp_refresh_mode = refresh_mode; 1125 unsigned vp_refresh_mode = refresh_mode;
1126 unsigned hidden_flags = skin_viewport->hidden_flags;
1126 1127
1127 display->set_viewport(&skin_viewport->vp); 1128 display->set_viewport(&skin_viewport->vp);
1128 1129
1129 int hidden_vp = 0;
1130
1131#ifdef HAVE_LCD_BITMAP 1130#ifdef HAVE_LCD_BITMAP
1132 /* Set images to not to be displayed */ 1131 /* Set images to not to be displayed */
1133 struct skin_token_list *imglist = data->images; 1132 struct skin_token_list *imglist = data->images;
@@ -1138,19 +1137,18 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode)
1138 imglist = imglist->next; 1137 imglist = imglist->next;
1139 } 1138 }
1140#endif 1139#endif
1141 /* dont redraw the viewport if its disabled */ 1140 if ((hidden_flags&VP_NEVER_VISIBLE))
1142 if (skin_viewport->hidden_flags&VP_NEVER_VISIBLE) 1141 {
1143 { /* don't draw anything into this one */ 1142 continue;
1144 vp_refresh_mode = 0; hidden_vp = true;
1145 } 1143 }
1146 else if ((skin_viewport->hidden_flags&VP_DRAW_HIDDEN)) 1144 if ((hidden_flags&VP_DRAW_HIDDEN))
1147 { 1145 {
1148 if (!(skin_viewport->hidden_flags&VP_DRAW_WASHIDDEN)) 1146 if (!(hidden_flags&VP_DRAW_WASHIDDEN))
1149 display->scroll_stop(&skin_viewport->vp); 1147 display->scroll_stop(&skin_viewport->vp);
1150 skin_viewport->hidden_flags |= VP_DRAW_WASHIDDEN; 1148 skin_viewport->hidden_flags |= VP_DRAW_WASHIDDEN;
1151 continue; 1149 continue;
1152 } 1150 }
1153 else if (((skin_viewport->hidden_flags& 1151 else if (((hidden_flags&
1154 (VP_DRAW_WASHIDDEN|VP_DRAW_HIDEABLE)) 1152 (VP_DRAW_WASHIDDEN|VP_DRAW_HIDEABLE))
1155 == (VP_DRAW_WASHIDDEN|VP_DRAW_HIDEABLE))) 1153 == (VP_DRAW_WASHIDDEN|VP_DRAW_HIDEABLE)))
1156 { 1154 {
@@ -1160,7 +1158,8 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode)
1160 1158
1161 if (vp_refresh_mode == WPS_REFRESH_ALL) 1159 if (vp_refresh_mode == WPS_REFRESH_ALL)
1162 { 1160 {
1163 display->clear_viewport(); 1161 if (!(hidden_flags&VP_NEVER_CLEAR))
1162 display->clear_viewport();
1164 } 1163 }
1165 1164
1166 /* loop over the lines for this viewport */ 1165 /* loop over the lines for this viewport */
@@ -1179,7 +1178,7 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode)
1179 flags = line->curr_subline->line_type; 1178 flags = line->curr_subline->line_type;
1180 1179
1181 if (vp_refresh_mode == WPS_REFRESH_ALL || (flags & vp_refresh_mode) 1180 if (vp_refresh_mode == WPS_REFRESH_ALL || (flags & vp_refresh_mode)
1182 || new_subline_refresh || hidden_vp) 1181 || new_subline_refresh)
1183 { 1182 {
1184 /* get_line tells us if we need to update the line */ 1183 /* get_line tells us if we need to update the line */
1185 update_line = get_line(gwps, subline, &align, 1184 update_line = get_line(gwps, subline, &align,
@@ -1225,7 +1224,7 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode)
1225 } 1224 }
1226#endif 1225#endif
1227 1226
1228 if (update_line && !hidden_vp && 1227 if (update_line &&
1229 /* conditionals clear the line which means if the %Vd is put into the default 1228 /* conditionals clear the line which means if the %Vd is put into the default
1230 viewport there will be a blank line. 1229 viewport there will be a blank line.
1231 To get around this we dont allow any actual drawing to happen in the 1230 To get around this we dont allow any actual drawing to happen in the
@@ -1254,8 +1253,7 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode)
1254 } 1253 }
1255 } 1254 }
1256 /* Now display any images in this viewport */ 1255 /* Now display any images in this viewport */
1257 if (!hidden_vp) 1256 wps_display_images(gwps, &skin_viewport->vp);
1258 wps_display_images(gwps, &skin_viewport->vp);
1259#endif 1257#endif
1260 } 1258 }
1261 1259
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h
index b0f5f36eb5..839a066a2d 100644
--- a/apps/gui/skin_engine/wps_internals.h
+++ b/apps/gui/skin_engine/wps_internals.h
@@ -197,6 +197,7 @@ struct skin_line {
197#define VP_DRAW_WASHIDDEN 0x4 197#define VP_DRAW_WASHIDDEN 0x4
198/* these are never drawn, nor cleared, i.e. just ignored */ 198/* these are never drawn, nor cleared, i.e. just ignored */
199#define VP_NEVER_VISIBLE 0x8 199#define VP_NEVER_VISIBLE 0x8
200#define VP_NEVER_CLEAR 0x10
200#define VP_DEFAULT_LABEL '|' 201#define VP_DEFAULT_LABEL '|'
201#define VP_NO_LABEL '-' 202#define VP_NO_LABEL '-'
202#define VP_INFO_LABEL '_' 203#define VP_INFO_LABEL '_'
diff --git a/apps/gui/statusbar-skinned.c b/apps/gui/statusbar-skinned.c
index 0902950599..179e69661a 100644
--- a/apps/gui/statusbar-skinned.c
+++ b/apps/gui/statusbar-skinned.c
@@ -85,7 +85,7 @@ void sb_skin_data_load(enum screen_type screen, const char *buf, bool isfile)
85 success = false; 85 success = false;
86 } 86 }
87 /* hide this viewport, forever */ 87 /* hide this viewport, forever */
88 vp->hidden_flags = VP_NEVER_VISIBLE; 88 vp->hidden_flags = VP_NEVER_CLEAR;
89 } 89 }
90 90
91 if (!success && isfile) 91 if (!success && isfile)