Closed dliu2223 closed 7 months ago
The "" ID is used for the root, and your tree IDs must always be unique. By specifying that "" is the child of another node you have created a circular reference in the hierarchy and therefore an infinite loop.
Thanks for the quick response, I can work around it. Our application uses the string tree to represent network data (i.e., OpenConfig YANG model as JSON encoded text RFC 7951), the leaves of the JSON tree is the value and JSON supports null or "". I understand the []string is used to look up the child tree ID in map, in the future, it would be nice the []string could be []interface e.g., an interface supports GetValue() or GetIndex() to distinguish between leaf value or index to another branch.
For now, I just leave the branch empty when no data present. Let me know if this can be enhanced in the future and I will close it after your response. Thanks
1 more issue in using tree to represent JSON caused by the unique tree node id constraint, the following valid json cannot be represented in the map[string][]string for NewTreeWithStrings() { "list": [ {"foo": "123"}, {"foo": "456"} ] }
Separation of the tree node display label and tree node id seems necessary to make it work, any suggestion? Thanks
1 more issue just found with following data, when B is selected, C value ("leaf") disappear, again, the "leaf" is a value which has no branch defined in the map. data := map[string][]string{ "": {"A"}, "A": {"B", "C"}, "B": {"leaf"}, "C": {"leaf"}, } If this is also a expected behavior, it creates major issues for working on JSON data, please advise. Thanks
Separation of the tree node display label and tree node id seems necessary to make it work, any suggestion? Thanks
Correct, the NewTreeWithStrings
is just a shorthand where the content can also be the unique ID. for non-unique node data you will need to use NewTree
or NewTreeWithData
. The latter can take a binding.StringTree
where you will see the id and the value are indeed separated.
the "leaf" is a value which has no branch defined in the map
In this demo you have used the ID "leaf" twice - which is not unique. A common way to work with this would be to put the parent ID as a prefix to a child so the path is unique even though the final node id is the same. As with a file path where two files have the same name in different directories.
I'm closing this issue as I don't think its the responsibility of 'widget.Tree' to function with infinite loops in the data source.
Checklist
Describe the bug
data map[:[A] A:[B C D H J L O P S V Z] B:[C] C:[] D:[E] E:[F G] F:[adef] G:[adeg] H:[I] I:[ahi] O:[ao] P:[Q] Q:[R] R:[apqr] S:[T] T:[U] U:[astu] V:[W] W:[X] X:[Y] Y:[zzz] Z:[0 1 2 3 4 5 6 7 8 9]]2024/03/25 13:52:13 Lifecycle: Started 2024/03/25 13:52:14 Lifecycle: Entered Foreground runtime: goroutine stack exceeds 1000000000-byte limit runtime: sp=0xc022202370 stack=[0xc022202000, 0xc042202000] fatal error: stack overflow
runtime stack: runtime.throw({0x100740702?, 0x200000008?}) /usr/local/Cellar/go/1.21.1/libexec/src/runtime/panic.go:1077 +0x5c fp=0x700017dd5d88 sp=0x700017dd5d58 pc=0x100036efc runtime.newstack() /usr/local/Cellar/go/1.21.1/libexec/src/runtime/stack.go:1107 +0x5ac fp=0x700017dd5f38 sp=0x700017dd5d88 pc=0x1000509cc runtime.morestack() /usr/local/Cellar/go/1.21.1/libexec/src/runtime/asm_amd64.s:593 +0x8f fp=0x700017dd5f40 sp=0x700017dd5f38 pc=0x100067c4f
goroutine 14 [running]: fyne.io/fyne/v2/app.(settings).Theme.func1() /Users/liuda5f/go/src/fyne.io/fyne/v2/app/settings.go:67 +0x30 fp=0xc022202380 sp=0xc022202378 pc=0x100599ad0 fyne.io/fyne/v2/app.(settings).Theme(0x100599a55?) /Users/liuda5f/go/src/fyne.io/fyne/v2/app/settings.go:68 +0x95 fp=0xc0222023d8 sp=0xc022202380 pc=0x100599a55 fyne.io/fyne/v2/theme.current() /Users/liuda5f/go/src/fyne.io/fyne/v2/theme/theme.go:179 +0x31 fp=0xc022202408 sp=0xc0222023d8 pc=0x1002d9ad1 fyne.io/fyne/v2/theme.Padding() /Users/liuda5f/go/src/fyne.io/fyne/v2/theme/size.go:117 +0x13 fp=0xc022202430 sp=0xc022202408 pc=0x1002d8f93 fyne.io/fyne/v2/widget.(treeContentRenderer).MinSize.func1({0x100858070?, 0x10054ee22?}, {0xc00019c2a0?, 0xc000255020?}, 0x1, 0x10054ea0c?) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:754 +0x65 fp=0xc022202468 sp=0xc022202430 pc=0x100551825 fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100858070, 0x1}, {0x100857fd8, 0x1}, 0x555542, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:507 +0x98 fp=0xc0222024c8 sp=0xc022202468 pc=0x100550238 fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555541, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202528 sp=0xc0222024c8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555540, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202588 sp=0xc022202528 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55553f, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222025e8 sp=0xc022202588 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55553e, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202648 sp=0xc0222025e8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55553d, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222026a8 sp=0xc022202648 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55553c, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202708 sp=0xc0222026a8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55553b, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202768 sp=0xc022202708 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55553a, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222027c8 sp=0xc022202768 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555539, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202828 sp=0xc0222027c8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555538, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202888 sp=0xc022202828 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555537, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222028e8 sp=0xc022202888 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555536, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202948 sp=0xc0222028e8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555535, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222029a8 sp=0xc022202948 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555534, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202a08 sp=0xc0222029a8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555533, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202a68 sp=0xc022202a08 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555532, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202ac8 sp=0xc022202a68 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555531, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202b28 sp=0xc022202ac8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555530, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202b88 sp=0xc022202b28 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55552f, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202be8 sp=0xc022202b88 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55552e, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202c48 sp=0xc022202be8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55552d, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202ca8 sp=0xc022202c48 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55552c, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202d08 sp=0xc022202ca8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55552b, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202d68 sp=0xc022202d08 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55552a, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202dc8 sp=0xc022202d68 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555529, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202e28 sp=0xc022202dc8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555528, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202e88 sp=0xc022202e28 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555527, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202ee8 sp=0xc022202e88 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555526, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202f48 sp=0xc022202ee8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555525, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022202fa8 sp=0xc022202f48 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555524, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203008 sp=0xc022202fa8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555523, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203068 sp=0xc022203008 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555522, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222030c8 sp=0xc022203068 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555521, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203128 sp=0xc0222030c8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555520, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203188 sp=0xc022203128 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55551f, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222031e8 sp=0xc022203188 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55551e, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203248 sp=0xc0222031e8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55551d, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222032a8 sp=0xc022203248 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x55551c, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203308 sp=0xc0222032a8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x55551b, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203368 sp=0xc022203308 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x55551a, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222033c8 sp=0xc022203368 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555519, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203428 sp=0xc0222033c8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x555518, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203488 sp=0xc022203428 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x555517, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0222034e8 sp=0xc022203488 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x555516, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc022203548 sp=0xc0222034e8 pc=0x1005502ea ...5592307 frames elided... fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x22, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422010c8 sp=0xc042201068 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x21, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201128 sp=0xc0422010c8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x20, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201188 sp=0xc042201128 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x1f, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422011e8 sp=0xc042201188 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x1e, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201248 sp=0xc0422011e8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x1d, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422012a8 sp=0xc042201248 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x1c, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201308 sp=0xc0422012a8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x1b, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201368 sp=0xc042201308 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x1a, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422013c8 sp=0xc042201368 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x19, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201428 sp=0xc0422013c8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x18, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201488 sp=0xc042201428 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x17, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422014e8 sp=0xc042201488 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x16, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201548 sp=0xc0422014e8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x15, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422015a8 sp=0xc042201548 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x14, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201608 sp=0xc0422015a8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x13, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201668 sp=0xc042201608 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x12, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422016c8 sp=0xc042201668 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x11, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201728 sp=0xc0422016c8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x10, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201788 sp=0xc042201728 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0xf, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422017e8 sp=0xc042201788 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0xe, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201848 sp=0xc0422017e8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0xd, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422018a8 sp=0xc042201848 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0xc, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201908 sp=0xc0422018a8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0xb, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201968 sp=0xc042201908 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0xa, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc0422019c8 sp=0xc042201968 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x9, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201a28 sp=0xc0422019c8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x8, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201a88 sp=0xc042201a28 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x7, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201ae8 sp=0xc042201a88 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x6, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201b48 sp=0xc042201ae8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x5, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201ba8 sp=0xc042201b48 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x4, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201c08 sp=0xc042201ba8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x1007358fb, 0x1}, 0x3, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201c68 sp=0xc042201c08 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x1007358fb, 0x1}, {0x100857fd8, 0x1}, 0x2, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201cc8 sp=0xc042201c68 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x100857fd8, 0x1}, {0x0, 0x0}, 0x1, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201d28 sp=0xc042201cc8 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walk(0xc0001ff950, {0x0, 0x0}, {0x0, 0x0}, 0x0, 0xc042201de0) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:511 +0x14a fp=0xc042201d88 sp=0xc042201d28 pc=0x1005502ea fyne.io/fyne/v2/widget.(Tree).walkAll(...) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:523 fyne.io/fyne/v2/widget.(treeContentRenderer).MinSize(0xc0002d0600) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/tree.go:742 +0xca fp=0xc042201e10 sp=0xc042201d88 pc=0x10055176a fyne.io/fyne/v2/widget.(BaseWidget).MinSize(0xc001d85e20?) /Users/liuda5f/go/src/fyne.io/fyne/v2/widget/widget.go:91 +0x26 fp=0xc042201e30 sp=0xc042201e10 pc=0x1005534c6 fyne.io/fyne/v2/widget.(*treeContent).MinSize(0x100553045?)