summaryrefslogtreecommitdiff
path: root/apps/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menu.c')
-rw-r--r--apps/menu.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/apps/menu.c b/apps/menu.c
index 29dad82851..dd5a23b933 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -160,7 +160,6 @@ static void menu_get_icon(int selected_item, void * data, ICON * icon)
160 *icon = bitmap_icons_6x8[menu_icon]; 160 *icon = bitmap_icons_6x8[menu_icon];
161 break; 161 break;
162 case MT_FUNCTION_CALL: 162 case MT_FUNCTION_CALL:
163 case MT_FUNCTION_WITH_PARAM:
164 case MT_RETURN_VALUE: 163 case MT_RETURN_VALUE:
165 if (menu_icon == Icon_NOICON) 164 if (menu_icon == Icon_NOICON)
166 *icon = bitmap_icons_6x8[Icon_Menu_functioncall]; 165 *icon = bitmap_icons_6x8[Icon_Menu_functioncall];
@@ -545,14 +544,21 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
545 } 544 }
546 break; 545 break;
547 case MT_FUNCTION_CALL: 546 case MT_FUNCTION_CALL:
547 {
548 int return_value;
548 action_signalscreenchange(); 549 action_signalscreenchange();
549 temp->function(); 550 if (temp->flags&MENU_FUNC_USEPARAM)
550 break; 551 return_value = temp->function->function_w_param(
551 case MT_FUNCTION_WITH_PARAM: 552 temp->function->param);
552 action_signalscreenchange(); 553 else
553 temp->func_with_param->function( 554 return_value = temp->function->function();
554 temp->func_with_param->param); 555 if (temp->flags&MENU_FUNC_CHECK_RETVAL)
556 {
557 if (return_value == temp->function->exit_value)
558 return return_value;
559 }
555 break; 560 break;
561 }
556 case MT_SETTING: 562 case MT_SETTING:
557 case MT_SETTING_W_TEXT: 563 case MT_SETTING_W_TEXT:
558 { 564 {