@@ -5238,14 +5238,6 @@ def item(
5238
5238
"""
5239
5239
if item not in self .RI .tree :
5240
5240
raise ValueError (f"Item '{ item } ' does not exist." )
5241
- if isinstance (iid , str ):
5242
- if iid in self .RI .tree :
5243
- raise ValueError (f"Cannot rename '{ iid } ', it already exists." )
5244
- self .RI .tree [item ].iid = iid
5245
- self .RI .tree [iid ] = self .RI .tree .pop (item )
5246
- self .RI .tree_rns [iid ] = self .RI .tree_rns .pop (item )
5247
- if iid in self .RI .tree_open_ids :
5248
- self .RI .tree_open_ids [iid ] = self .RI .tree_open_ids .pop (item )
5249
5241
if isinstance (text , str ):
5250
5242
self .RI .tree [item ].text = text
5251
5243
if isinstance (values , list ):
@@ -5273,6 +5265,21 @@ def item(
5273
5265
)
5274
5266
else :
5275
5267
self .RI .tree_open_ids .discard (item )
5268
+ if isinstance (iid , str ):
5269
+ if iid in self .RI .tree :
5270
+ raise ValueError (f"Cannot rename '{ iid } ', it already exists." )
5271
+ for ciid in self .RI .tree [item ].children :
5272
+ self .RI .tree [ciid ].parent = iid
5273
+ if self .RI .tree [item ].parent :
5274
+ parent_node = self .RI .parent_node (item )
5275
+ item_index = parent_node .children .index (item )
5276
+ parent_node .children [item_index ] = iid
5277
+ self .RI .tree [item ].iid = iid
5278
+ self .RI .tree [iid ] = self .RI .tree .pop (item )
5279
+ self .RI .tree_rns [iid ] = self .RI .tree_rns .pop (item )
5280
+ if item in self .RI .tree_open_ids :
5281
+ self .RI .tree_open_ids .discard (item )
5282
+ self .RI .tree_open_ids .add (iid )
5276
5283
get = not (isinstance (iid , str ) or isinstance (text , str ) or isinstance (values , list ) or isinstance (open_ , bool ))
5277
5284
self .set_refresh_timer (redraw = not get and redraw )
5278
5285
if get :
0 commit comments