Skip to content

Commit 021eaf8

Browse files
committed
fix: bugs with changing item ids using item()
1 parent 631d165 commit 021eaf8

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

docs/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- [#267](https://github.com/ragardner/tksheet/issues/267) as it was not fixed in version `7.4.5`
77

88
#### Fixed:
9+
- Bugs with treeview mode `item()` `iid` parameter, used for changing item ids
910
- `see()` function scrolls to wrong position if the row index auto-resized after scrolling
1011

1112
#### Improved:

tksheet/sheet.py

+15-8
Original file line numberDiff line numberDiff line change
@@ -5238,14 +5238,6 @@ def item(
52385238
"""
52395239
if item not in self.RI.tree:
52405240
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)
52495241
if isinstance(text, str):
52505242
self.RI.tree[item].text = text
52515243
if isinstance(values, list):
@@ -5273,6 +5265,21 @@ def item(
52735265
)
52745266
else:
52755267
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)
52765283
get = not (isinstance(iid, str) or isinstance(text, str) or isinstance(values, list) or isinstance(open_, bool))
52775284
self.set_refresh_timer(redraw=not get and redraw)
52785285
if get:

0 commit comments

Comments
 (0)