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