summaryrefslogtreecommitdiff
path: root/apps/gui/statusbar-skinned.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/statusbar-skinned.c')
-rw-r--r--apps/gui/statusbar-skinned.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/apps/gui/statusbar-skinned.c b/apps/gui/statusbar-skinned.c
index f79672c0d9..960cf67d4d 100644
--- a/apps/gui/statusbar-skinned.c
+++ b/apps/gui/statusbar-skinned.c
@@ -87,8 +87,9 @@ int sb_postproccess(enum screen_type screen, struct wps_data *data)
87 /* hide the sb's default viewport because it has nasty effect with stuff 87 /* hide the sb's default viewport because it has nasty effect with stuff
88 * not part of the statusbar, 88 * not part of the statusbar,
89 * hence .sbs's without any other vps are unsupported*/ 89 * hence .sbs's without any other vps are unsupported*/
90 struct skin_viewport *vp = skin_find_item(VP_DEFAULT_LABEL, SKIN_FIND_VP, data); 90 struct skin_viewport *vp = skin_find_item(VP_DEFAULT_LABEL_STRING, SKIN_FIND_VP, data);
91 struct skin_element *next_vp = data->tree->next; 91 struct skin_element *tree = SKINOFFSETTOPTR(get_skin_buffer(data), data->tree);
92 struct skin_element *next_vp = SKINOFFSETTOPTR(get_skin_buffer(data), tree->next);
92 93
93 if (vp) 94 if (vp)
94 { 95 {
@@ -105,9 +106,9 @@ int sb_postproccess(enum screen_type screen, struct wps_data *data)
105 return 1; 106 return 1;
106} 107}
107 108
108static char *infovp_label[NB_SCREENS]; 109static OFFSETTYPE(char*) infovp_label[NB_SCREENS];
109static char *oldinfovp_label[NB_SCREENS]; 110static OFFSETTYPE(char*) oldinfovp_label[NB_SCREENS];
110void sb_set_info_vp(enum screen_type screen, char *label) 111void sb_set_info_vp(enum screen_type screen, OFFSETTYPE(char*) label)
111{ 112{
112 infovp_label[screen] = label; 113 infovp_label[screen] = label;
113} 114}
@@ -116,15 +117,19 @@ struct viewport *sb_skin_get_info_vp(enum screen_type screen)
116{ 117{
117 struct wps_data *data = skin_get_gwps(CUSTOM_STATUSBAR, screen)->data; 118 struct wps_data *data = skin_get_gwps(CUSTOM_STATUSBAR, screen)->data;
118 struct skin_viewport *vp = NULL; 119 struct skin_viewport *vp = NULL;
120 char *label;
119 if (oldinfovp_label[screen] && 121 if (oldinfovp_label[screen] &&
120 strcmp(oldinfovp_label[screen], infovp_label[screen])) 122 (oldinfovp_label[screen] != infovp_label[screen]))
121 { 123 {
122 /* UI viewport changed, so force a redraw */ 124 /* UI viewport changed, so force a redraw */
123 oldinfovp_label[screen] = infovp_label[screen]; 125 oldinfovp_label[screen] = infovp_label[screen];
124 viewportmanager_theme_enable(screen, false, NULL); 126 viewportmanager_theme_enable(screen, false, NULL);
125 viewportmanager_theme_undo(screen, true); 127 viewportmanager_theme_undo(screen, true);
126 } 128 }
127 vp = skin_find_item(infovp_label[screen], SKIN_FIND_UIVP, data); 129 label = SKINOFFSETTOPTR(get_skin_buffer(data), infovp_label[screen]);
130 if (infovp_label[screen] == VP_DEFAULT_LABEL)
131 label = VP_DEFAULT_LABEL_STRING;
132 vp = skin_find_item(label, SKIN_FIND_UIVP, data);
128 if (!vp) 133 if (!vp)
129 return NULL; 134 return NULL;
130 if (vp->parsed_fontid == 1) 135 if (vp->parsed_fontid == 1)
@@ -270,7 +275,7 @@ void sb_skin_init(void)
270{ 275{
271 FOR_NB_SCREENS(i) 276 FOR_NB_SCREENS(i)
272 { 277 {
273 oldinfovp_label[i] = NULL; 278 oldinfovp_label[i] = VP_DEFAULT_LABEL;
274 } 279 }
275} 280}
276 281