summaryrefslogtreecommitdiff
path: root/apps/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menu.c')
-rw-r--r--apps/menu.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/apps/menu.c b/apps/menu.c
index d970ac8861..ba772a80fa 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -296,19 +296,30 @@ void init_default_menu_viewports(struct viewport parent[NB_SCREENS], bool hide_b
296 } 296 }
297 } 297 }
298#ifdef HAS_BUTTONBAR 298#ifdef HAS_BUTTONBAR
299 if (!hide_bars) 299 if (!hide_bars && global_settings.buttonbar)
300 parent[0].height -= BUTTONBAR_HEIGHT; 300 parent[0].height -= BUTTONBAR_HEIGHT;
301#endif 301#endif
302} 302}
303 303
304bool do_setting_from_menu(const struct menu_item_ex *temp) 304bool do_setting_from_menu(const struct menu_item_ex *temp)
305{ 305{
306 int setting_id; 306 int setting_id, oldval;
307 const struct settings_list *setting = find_setting( 307 const struct settings_list *setting = find_setting(
308 temp->variable, 308 temp->variable,
309 &setting_id); 309 &setting_id);
310 char *title; 310 char *title;
311 char padded_title[MAX_PATH]; 311 char padded_title[MAX_PATH];
312 int var_type = setting->flags&F_T_MASK;
313 if (var_type == F_T_INT || var_type == F_T_UINT)
314 {
315 oldval = *(int*)setting->setting;
316 }
317 else if (var_type == F_T_BOOL)
318 {
319 oldval = *(bool*)setting->setting;
320 }
321 else
322 oldval = 0;
312 if ((temp->flags&MENU_TYPE_MASK) == MT_SETTING_W_TEXT) 323 if ((temp->flags&MENU_TYPE_MASK) == MT_SETTING_W_TEXT)
313 title = temp->callback_and_desc->desc; 324 title = temp->callback_and_desc->desc;
314 else 325 else
@@ -339,6 +350,14 @@ bool do_setting_from_menu(const struct menu_item_ex *temp)
339 350
340 option_screen((struct settings_list *)setting, 351 option_screen((struct settings_list *)setting,
341 setting->flags&F_TEMPVAR, title); 352 setting->flags&F_TEMPVAR, title);
353 if (var_type == F_T_INT || var_type == F_T_UINT)
354 {
355 return oldval != *(int*)setting->setting;
356 }
357 else if (var_type == F_T_BOOL)
358 {
359 return oldval != *(bool*)setting->setting;
360 }
342 return false; 361 return false;
343} 362}
344 363
@@ -548,9 +567,9 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
548 if (temp->flags&MENU_HAS_DESC && 567 if (temp->flags&MENU_HAS_DESC &&
549 temp->callback_and_desc->desc == ID2P(LANG_LANGUAGE)) 568 temp->callback_and_desc->desc == ID2P(LANG_LANGUAGE))
550 { 569 {
570 init_default_menu_viewports(menu_vp, hide_bars);
551 init_menu_lists(menu, &lists, selected, true, vps); 571 init_menu_lists(menu, &lists, selected, true, vps);
552 } 572 }
553 init_default_menu_viewports(menu_vp, hide_bars);
554 573
555 if (temp->flags&MENU_FUNC_CHECK_RETVAL) 574 if (temp->flags&MENU_FUNC_CHECK_RETVAL)
556 { 575 {