()
| 324 | } |
| 325 | |
| 326 | func (tr *Tree) duplicateSync() { |
| 327 | sn := tr.SyncNode |
| 328 | tvparent := AsTree(tr.Parent) |
| 329 | parent := tvparent.SyncNode |
| 330 | if parent == nil { |
| 331 | log.Printf("Tree %v nil SyncNode in: %v\n", tr, tvparent.Path()) |
| 332 | return |
| 333 | } |
| 334 | myidx := sn.AsTree().IndexInParent() |
| 335 | if myidx < 0 { |
| 336 | return |
| 337 | } |
| 338 | nm := fmt.Sprintf("%v_Copy", sn.AsTree().Name) |
| 339 | nwkid := sn.AsTree().Clone() |
| 340 | nwkid.AsTree().SetName(nm) |
| 341 | parent.AsTree().InsertChild(nwkid, myidx+1) |
| 342 | tvparent.sendChangeEventReSync(nil) |
| 343 | if tvk := tvparent.ChildByName("tv_"+nm, 0); tvk != nil { |
| 344 | stv := AsTree(tvk) |
| 345 | stv.SelectEvent(events.SelectOne) |
| 346 | } |
| 347 | } |
| 348 | |
| 349 | // editNode pulls up a [Form] dialog for the node. |
| 350 | // If SyncNode is set, operates on Sync Tree. |
no test coverage detected