diff options
Diffstat (limited to 'apps/menu.c')
-rw-r--r-- | apps/menu.c | 20 |
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 | { |