From 111506601493325aeefb01df6502a4ca27fceb03 Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Fri, 30 Mar 2018 20:31:56 +0200 Subject: Some minor updates and fixes Keep menu open instead of refresh if integer adaptor value has not changed (for performance reasons) Correctly handle Menu_React_KeepOpen in MenuQueryCancel() Add default limits (min/max int) to AdaptorGetLimits() Allow access to the active submenu --- Script.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'Script.c') diff --git a/Script.c b/Script.c index f6c4598..61f3579 100644 --- a/Script.c +++ b/Script.c @@ -241,6 +241,11 @@ func ActivateEntry(int index, int action) MenuItemCommand(entry[DT_Menu_Entry_Symbol], index, action); } +func SubMenu() +{ + return subMenu; +} + func &Var(int index) { return vars[index]; @@ -578,10 +583,10 @@ func SubmenuItemCallback(int action, object menuObject, args, array allArgs) func MenuQueryCancel(int selection, object menuObject) { + var reaction; if(selection != -1) { var entry = entries[selection]; - var reaction; if(CheckCondition(entry)) { reaction = CallCallbacks(entry[DT_Menu_Entry_Callbacks], Menu_CallbackType_Close, [Menu_CallbackType_Close, entry[DT_Menu_Entry_Symbol], settings[DT_Menu_Settings_Object], entry[DT_Menu_Entry_Args]]); @@ -590,7 +595,7 @@ func MenuQueryCancel(int selection, object menuObject) React(reaction, selection, true); } - if(settings[DT_Menu_Settings_KeepOpen] != DT_Menu_KeepOpen_Not && settings[DT_Menu_Settings_KeepOpen] != DT_Menu_KeepOpen_Permanent) + if((settings[DT_Menu_Settings_KeepOpen] != DT_Menu_KeepOpen_Not && settings[DT_Menu_Settings_KeepOpen] != DT_Menu_KeepOpen_Permanent) || (reaction == Menu_React_KeepOpen)) { return true; } @@ -1011,6 +1016,10 @@ func EnumEntrySettings(string& caption, &symbol, string& infoCaption, int index, func AdaptorGetLimits(array limits) { var ret = CreateArray(2); + if(!limits) + { + limits = [Menu_Adaptor_Limits_Min, Menu_Adaptor_Limits_Max]; + } for(var i = 0; i < 2; ++i) { @@ -1398,6 +1407,10 @@ func AdaptorCommand(int action, object obj, args, array allArgs) return reaction; } } + else + { + return Menu_React_KeepOpen; + } } else if(args[DT_Menu_Adaptor_Type] == Menu_AdaptorType_String) { -- cgit v1.2.3-54-g00ecf