summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Mittendrein <maxmitti@maxmitti.tk>2022-04-13 20:48:49 +0200
committerMarkus Mittendrein <maxmitti@maxmitti.tk>2022-04-13 20:48:49 +0200
commit707cbc40a2ad679a5b040cdb04780a55083c3364 (patch)
tree41a633fddd402692e80d3b2e7a5c1b500afc65bb
parentfdc281847581bdc67913c2f5c995b3c9e1606fe5 (diff)
downloadDTMenuDebug.c4d-master.tar.gz
DTMenuDebug.c4d-master.zip
Add Id field to Menu_Entry for consistent identification of entries across refreshesHEADmaster
-rw-r--r--Script.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/Script.c b/Script.c
index bc92b7d..5d2f5b6 100644
--- a/Script.c
+++ b/Script.c
@@ -1122,6 +1122,8 @@ func Refresh(array selection, bool delayed)
var oldNoSelectionCallbacks = noSelectionCallbacks;
noSelectionCallbacks = true;
+ var oldSelectionId = columnEntries[selection[1]]?[selection[0]]?.Id;
+
CloseMenu(settings.Object);
var oldRefreshing = refreshing;
@@ -1133,6 +1135,20 @@ func Refresh(array selection, bool delayed)
if(GetLength(columnEntries[column]) > 0)
{
+ if (oldSelectionId != nil)
+ {
+ var i = 0;
+ for (var entry in columnEntries[column])
+ {
+ if (entry.Id == oldSelectionId)
+ {
+ selection = i;
+ break;
+ }
+ ++i;
+ }
+ }
+
SelectEntry(BoundBy(selection, 0, GetLength(columnEntries[column]) - 1), column);
if(settings.InstantDescription.Enable)
@@ -1223,6 +1239,7 @@ Menu_Entry({
Callback = <Callback>,
AllowDisabledSelection = >Menu_Condition_Default< | Menu_Condition_AllowSelection | Menu_Condition_DenySelection
},
+ Id = <Can be set to any unique non-nil value to re-identify entries on refreshing/reopening>
Extra = <Same as extra of AddMenuItem> >Also used internally<,
XPar1 = <Same as XPar1 of AddMenuItem> >Also used internally<,
XPar2 = <Same as XPar2 of AddMenuItem> >Also used internally<,