diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index 75b4c4298f..5c169c81de 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c | |||
@@ -619,7 +619,7 @@ static int parse_progressbar_tag(struct skin_element* element, | |||
619 | return -1; | 619 | return -1; |
620 | add_to_ll_chain(&wps_data->progressbars, item); | 620 | add_to_ll_chain(&wps_data->progressbars, item); |
621 | 621 | ||
622 | /* (x,y,width,height,filename) */ | 622 | /* (x, y, width, height, ...) */ |
623 | if (!isdefault(param)) | 623 | if (!isdefault(param)) |
624 | pb->x = param->data.number; | 624 | pb->x = param->data.number; |
625 | else | 625 | else |
@@ -659,11 +659,15 @@ static int parse_progressbar_tag(struct skin_element* element, | |||
659 | #endif | 659 | #endif |
660 | } | 660 | } |
661 | } | 661 | } |
662 | param++; | 662 | /* optional params, first is the image filename if it isnt recognised as a keyword */ |
663 | if (!isdefault(param)) | 663 | |
664 | pb->bm.data = param->data.text; | 664 | curr_param = 4; |
665 | 665 | if (isdefault(&element->params[curr_param])) | |
666 | curr_param = 5; | 666 | { |
667 | param++; | ||
668 | curr_param++; | ||
669 | } | ||
670 | |||
667 | pb->horizontal = pb->width > pb->height; | 671 | pb->horizontal = pb->width > pb->height; |
668 | while (curr_param < element->params_count) | 672 | while (curr_param < element->params_count) |
669 | { | 673 | { |
@@ -679,9 +683,20 @@ static int parse_progressbar_tag(struct skin_element* element, | |||
679 | curr_param++; | 683 | curr_param++; |
680 | param++; | 684 | param++; |
681 | pb->slider = find_image(param->data.text, wps_data); | 685 | pb->slider = find_image(param->data.text, wps_data); |
682 | if (!pb->slider) | ||
683 | return -1; | ||
684 | } | 686 | } |
687 | else /* option needs the next param */ | ||
688 | return -1; | ||
689 | } | ||
690 | else if (!strcmp(param->data.text, "image")) | ||
691 | { | ||
692 | if (curr_param+1 < element->params_count) | ||
693 | { | ||
694 | curr_param++; | ||
695 | param++; | ||
696 | pb->bm.data = param->data.text; | ||
697 | } | ||
698 | else /* option needs the next param */ | ||
699 | return -1; | ||
685 | } | 700 | } |
686 | else if (!strcmp(param->data.text, "vertical")) | 701 | else if (!strcmp(param->data.text, "vertical")) |
687 | { | 702 | { |
@@ -691,6 +706,8 @@ static int parse_progressbar_tag(struct skin_element* element, | |||
691 | } | 706 | } |
692 | else if (!strcmp(param->data.text, "horizontal")) | 707 | else if (!strcmp(param->data.text, "horizontal")) |
693 | pb->horizontal = true; | 708 | pb->horizontal = true; |
709 | else if (curr_param == 4) | ||
710 | pb->bm.data = param->data.text; | ||
694 | 711 | ||
695 | curr_param++; | 712 | curr_param++; |
696 | } | 713 | } |