diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_display.c')
-rw-r--r-- | apps/gui/skin_engine/skin_display.c | 26 |
1 files changed, 12 insertions, 14 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 | ||