Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix [2a6c62afd9] - <<TreeviewSelect>> does not fire on item delete |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | core-8-6-branch |
Files: | files | file ages | folders |
SHA3-256: |
99f5f2a691cae6bd6dda26d4b35d8dd0 |
User & Date: | fvogel 2019-05-26 19:05:50.559 |
Context
2019-05-26
| ||
19:10 | Fix [ce470f20fd]: ttk::treeview has column dragging issues check-in: 0e9cbdba user: fvogel tags: core-8-6-branch | |
19:06 | Fix [2a6c62afd9] - <<TreeviewSelect>> does not fire on item delete check-in: 27092202 user: fvogel tags: trunk | |
19:05 | Fix [2a6c62afd9] - <<TreeviewSelect>> does not fire on item delete check-in: 99f5f2a6 user: fvogel tags: core-8-6-branch | |
18:38 | Merge implementation of TIP #541 following positive vote by the TCT. check-in: ab1ef117 user: fvogel tags: core-8-6-branch | |
2019-05-14
| ||
21:25 | Refine test treeview-8.7 by also checking that deleting an unselected item does NOT fire <<TreeviewSelect>> check-in: 6c51007f user: fvogel tags: bug-2a6c62afd9 | |
Changes
Changes to generic/ttk/ttkTreeview.c.
︙ | ︙ | |||
2680 2681 2682 2683 2684 2685 2686 | */ static int TreeviewDeleteCommand( void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) { Treeview *tv = recordPtr; TreeItem **items, *delq; | | | 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 | */ static int TreeviewDeleteCommand( void *recordPtr, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) { Treeview *tv = recordPtr; TreeItem **items, *delq; int i, selItemDeleted = 0; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "items"); return TCL_ERROR; } if (!(items = GetItemListFromObj(interp, tv, objv[2]))) { |
︙ | ︙ | |||
2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 | } } /* Remove items from hash table. */ delq = 0; for (i=0; items[i]; ++i) { delq = DeleteItems(items[i], delq); } /* Free items: */ while (delq) { TreeItem *next = delq->next; if (tv->tree.focus == delq) tv->tree.focus = 0; if (tv->tree.endPtr == delq) tv->tree.endPtr = 0; FreeItem(delq); delq = next; } ckfree(items); TtkRedisplayWidget(&tv->core); return TCL_OK; } /* + $tv move $item $parent $index * Move $item to the specified $index in $parent's child list. */ | > > > > > > | 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 | } } /* Remove items from hash table. */ delq = 0; for (i=0; items[i]; ++i) { if (items[i]->state & TTK_STATE_SELECTED) { selItemDeleted = 1; } delq = DeleteItems(items[i], delq); } /* Free items: */ while (delq) { TreeItem *next = delq->next; if (tv->tree.focus == delq) tv->tree.focus = 0; if (tv->tree.endPtr == delq) tv->tree.endPtr = 0; FreeItem(delq); delq = next; } ckfree(items); if (selItemDeleted) { TtkSendVirtualEvent(tv->core.tkwin, "TreeviewSelect"); } TtkRedisplayWidget(&tv->core); return TCL_OK; } /* + $tv move $item $parent $index * Move $item to the specified $index in $parent's child list. */ |
︙ | ︙ |
Changes to tests/ttk/treeview.test.
︙ | ︙ | |||
454 455 456 457 458 459 460 461 462 463 464 465 466 467 | .tv selection set {} .tv selection } -result {} test treeview-8.5 "Selection - bad operation" -body { .tv selection badop foo } -returnCodes 1 -match glob -result {bad selection operation "badop": must be *} ### NEED: more tests for see/yview/scrolling proc scrollcallback {args} { set ::scrolldata $args } test treeview-9.0 "scroll callback - empty tree" -body { | > > > > > > > > > > > > > > > > > > > > > > > > > | 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 | .tv selection set {} .tv selection } -result {} test treeview-8.5 "Selection - bad operation" -body { .tv selection badop foo } -returnCodes 1 -match glob -result {bad selection operation "badop": must be *} test treeview-8.6 "Selection - <<TreeviewSelect>> on selection add" -body { .tv selection set {} bind .tv <<TreeviewSelect>> {set res 1} set res 0 .tv selection add newnode.n1 update set res } -result {1} test treeview-8.7 "<<TreeviewSelect>> on selected item deletion" -body { .tv selection set {} .tv insert "" end -id selectedDoomed -text DeadItem .tv insert "" end -id doomed -text AlsoDead .tv selection add selectedDoomed update bind .tv <<TreeviewSelect>> {lappend res 1} set res 0 .tv delete doomed update set res [expr {$res == 0}] .tv delete selectedDoomed update set res } -result {1 1} ### NEED: more tests for see/yview/scrolling proc scrollcallback {args} { set ::scrolldata $args } test treeview-9.0 "scroll callback - empty tree" -body { |
︙ | ︙ |