From 0b2e1ba92d1557d0e3d14490e3436844dcb79453 Mon Sep 17 00:00:00 2001 From: deadwood Date: Wed, 10 Jun 2015 20:43:20 +0000 Subject: [PATCH] Listtree.mcc: implement Listtree_Rename git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@50807 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- workbench/classes/zune/listtree/Listtree_mcc.h | 2 ++ workbench/classes/zune/listtree/listtree.c | 36 ++++++++++++++++++++------ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/workbench/classes/zune/listtree/Listtree_mcc.h b/workbench/classes/zune/listtree/Listtree_mcc.h index d64aed5a14..d680c46cb0 100644 --- a/workbench/classes/zune/listtree/Listtree_mcc.h +++ b/workbench/classes/zune/listtree/Listtree_mcc.h @@ -44,6 +44,8 @@ #define MUIV_Listtree_Remove_TreeNode_Active -2 #define MUIV_Listtree_Remove_TreeNode_All -3 +#define MUIV_Listtree_Rename_TreeNode_Active -2 + #define MUIV_Listtree_Insert_ListNode_Root 0 #define MUIV_Listtree_Insert_ListNode_Active -2 diff --git a/workbench/classes/zune/listtree/listtree.c b/workbench/classes/zune/listtree/listtree.c index 8775544227..052b0011de 100644 --- a/workbench/classes/zune/listtree/listtree.c +++ b/workbench/classes/zune/listtree/listtree.c @@ -269,7 +269,6 @@ IPTR Listtree__##methodname(struct IClass *cl, Object *obj, Msg msg) \ return (IPTR)FALSE; \ } -METHODSTUB(MUIM_Listtree_Rename) METHODSTUB(MUIM_Listtree_Open) METHODSTUB(MUIM_Listtree_Close) METHODSTUB(MUIM_Listtree_SetDropMark) @@ -288,13 +287,6 @@ IPTR Listtree__MUIM_Listtree_Insert(struct IClass *cl, Object *obj, struct MUIP_ _return = &_int->base; _return->tn_Flags = (UWORD)msg->Flags; - if (msg->Name) - { - LONG len = strlen(msg->Name) + 1; - _return->tn_Name = AllocPooled(data->pool, len); - CopyMem(msg->Name, _return->tn_Name, len); - } - if (data->constrhook) _return->tn_User = (APTR)CallHookPkt(data->constrhook, data->pool, msg->User); else @@ -325,6 +317,8 @@ IPTR Listtree__MUIM_Listtree_Insert(struct IClass *cl, Object *obj, struct MUIP_ _int->ref = (struct MUI_NListtree_TreeNode *)DoMethod(data->nlisttree, MUIM_NListtree_Insert, msg->Name, _return, ln, pn, msg->Flags); + _return->tn_Name = _int->ref->tn_Name; + return (IPTR)_return; } @@ -431,3 +425,29 @@ IPTR Listtree__MUIM_Listtree_GetNr(struct IClass *cl, Object *obj, struct MUIP_L return DoMethod(data->nlisttree, MUIM_NListtree_GetNr, tn, msg->Flags); } + +IPTR Listtree__MUIM_Listtree_Rename(struct IClass *cl, Object *obj, struct MUIP_Listtree_Rename *msg) +{ + struct Listtree_DATA *data = INST_DATA(cl, obj); + struct MUI_NListtree_TreeNode * tn = NULL, * renamed = NULL; + + switch((IPTR)msg->TreeNode) + { + case(MUIV_Listtree_Rename_TreeNode_Active): + tn = msg->TreeNode; + break; + default: + tn = ((struct MUIS_Listtree_TreeNodeInt *)msg->TreeNode)->ref; + } + + renamed = (struct MUI_NListtree_TreeNode *)DoMethod(data->nlisttree, + MUIM_NListtree_Rename, tn, msg->NewName, msg->Flags); + + if (renamed) + { + ((struct MUIS_Listtree_TreeNode *)renamed->tn_User)->tn_Name = renamed->tn_Name; + return (IPTR)renamed->tn_User; + } + else + return (IPTR)NULL; +} -- 2.11.4.GIT