diff options
Diffstat (limited to 'apps/gui/bitmap/list-skinned.c')
-rw-r--r-- | apps/gui/bitmap/list-skinned.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/apps/gui/bitmap/list-skinned.c b/apps/gui/bitmap/list-skinned.c index 208b2df681..444d49148f 100644 --- a/apps/gui/bitmap/list-skinned.c +++ b/apps/gui/bitmap/list-skinned.c | |||
@@ -175,22 +175,23 @@ bool skinlist_draw(struct screen *display, struct gui_synclist *list) | |||
175 | for (cur_line = 0; cur_line < display_lines; cur_line++) | 175 | for (cur_line = 0; cur_line < display_lines; cur_line++) |
176 | { | 176 | { |
177 | struct skin_element* viewport; | 177 | struct skin_element* viewport; |
178 | struct skin_viewport* skin_viewport; | 178 | struct skin_viewport* skin_viewport = NULL; |
179 | if (list_start_item+cur_line+1 > list->nb_items) | 179 | if (list_start_item+cur_line+1 > list->nb_items) |
180 | break; | 180 | break; |
181 | current_drawing_line = list_start_item+cur_line; | 181 | current_drawing_line = list_start_item+cur_line; |
182 | is_selected = list->show_selection_marker && | 182 | is_selected = list->show_selection_marker && |
183 | list_start_item+cur_line == list->selected_item; | 183 | list_start_item+cur_line == list->selected_item; |
184 | 184 | ||
185 | for (viewport = listcfg[screen]->data->tree; | 185 | for (viewport = SKINOFFSETTOPTR(get_skin_buffer(wps.data), listcfg[screen]->data->tree); |
186 | viewport; | 186 | viewport; |
187 | viewport = viewport->next) | 187 | viewport = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->next)) |
188 | { | 188 | { |
189 | int origional_x, origional_y; | 189 | int origional_x, origional_y; |
190 | int origional_w, origional_h; | 190 | int origional_w, origional_h; |
191 | char *viewport_label = SKINOFFSETTOPTR(get_skin_buffer(wps.data), skin_viewport->label); | ||
191 | skin_viewport = (struct skin_viewport*)viewport->data; | 192 | skin_viewport = (struct skin_viewport*)viewport->data; |
192 | if (viewport->children == 0 || !skin_viewport->label || | 193 | if (viewport->children == 0 || !viewport_label || |
193 | (skin_viewport->label && strcmp(label, skin_viewport->label)) | 194 | (skin_viewport->label && strcmp(label, viewport_label)) |
194 | ) | 195 | ) |
195 | continue; | 196 | continue; |
196 | if (is_selected) | 197 | if (is_selected) |
@@ -220,15 +221,17 @@ bool skinlist_draw(struct screen *display, struct gui_synclist *list) | |||
220 | display->set_viewport(&skin_viewport->vp); | 221 | display->set_viewport(&skin_viewport->vp); |
221 | #ifdef HAVE_LCD_BITMAP | 222 | #ifdef HAVE_LCD_BITMAP |
222 | /* Set images to not to be displayed */ | 223 | /* Set images to not to be displayed */ |
223 | struct skin_token_list *imglist = wps.data->images; | 224 | struct skin_token_list *imglist = SKINOFFSETTOPTR(get_skin_buffer(wps.data), wps.data->images); |
224 | while (imglist) | 225 | while (imglist) |
225 | { | 226 | { |
226 | struct gui_img *img = (struct gui_img *)imglist->token->value.data; | 227 | struct wps_token *token = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->token); |
228 | struct gui_img *img = SKINOFFSETTOPTR(get_skin_buffer(wps.data), token->value.data); | ||
227 | img->display = -1; | 229 | img->display = -1; |
228 | imglist = imglist->next; | 230 | imglist = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->next); |
229 | } | 231 | } |
230 | #endif | 232 | #endif |
231 | skin_render_viewport(viewport->children[0], | 233 | struct skin_element** children = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->children); |
234 | skin_render_viewport(children[0], | ||
232 | &wps, skin_viewport, SKIN_REFRESH_ALL); | 235 | &wps, skin_viewport, SKIN_REFRESH_ALL); |
233 | #ifdef HAVE_LCD_BITMAP | 236 | #ifdef HAVE_LCD_BITMAP |
234 | wps_display_images(&wps, &skin_viewport->vp); | 237 | wps_display_images(&wps, &skin_viewport->vp); |