MCPcopy Create free account
hub / github.com/cogentcore/core / selectUpdate

Method selectUpdate

core/tree.go:743–815  ·  view source on GitHub ↗

selectUpdate updates selection to include this node, using selectmode from mouse event (ExtendContinuous, ExtendOne). Returns true if this node selected.

(mode events.SelectModes)

Source from the content-addressed store, hash-verified

741// using selectmode from mouse event (ExtendContinuous, ExtendOne).
742// Returns true if this node selected.
743func (tr *Tree) selectUpdate(mode events.SelectModes) bool {
744 if mode == events.NoSelect {
745 return false
746 }
747 sel := false
748 switch mode {
749 case events.SelectOne:
750 if tr.StateIs(states.Selected) {
751 sl := tr.GetSelectedNodes()
752 if len(sl) > 1 {
753 tr.UnselectAll()
754 tr.Select()
755 tr.SetFocus()
756 sel = true
757 }
758 } else {
759 tr.UnselectAll()
760 tr.Select()
761 tr.SetFocus()
762 sel = true
763 }
764 case events.ExtendContinuous:
765 sl := tr.GetSelectedNodes()
766 if len(sl) == 0 {
767 tr.Select()
768 tr.SetFocus()
769 sel = true
770 } else {
771 minIndex := -1
772 maxIndex := 0
773 sel = true
774 for _, v := range sl {
775 vn := v.AsCoreTree()
776 if minIndex < 0 {
777 minIndex = vn.viewIndex
778 } else {
779 minIndex = min(minIndex, vn.viewIndex)
780 }
781 maxIndex = max(maxIndex, vn.viewIndex)
782 }
783 cidx := tr.viewIndex
784 nn := tr
785 tr.Select()
786 if tr.viewIndex < minIndex {
787 for cidx < minIndex {
788 nn = nn.moveDown(events.SelectQuiet) // just select
789 cidx = nn.viewIndex
790 }
791 } else if tr.viewIndex > maxIndex {
792 for cidx > maxIndex {
793 nn = nn.moveUp(events.SelectQuiet) // just select
794 cidx = nn.viewIndex
795 }
796 }
797 }
798 case events.ExtendOne:
799 if tr.StateIs(states.Selected) {
800 tr.UnselectEvent()

Callers 9

SelectEventMethod · 0.95
moveToLastChildMethod · 0.95
moveDownMethod · 0.45
moveDownSiblingMethod · 0.45
moveUpMethod · 0.45
movePageUpEventMethod · 0.45
movePageDownEventMethod · 0.45
moveHomeEventMethod · 0.45
moveEndEventMethod · 0.45

Calls 11

GetSelectedNodesMethod · 0.95
UnselectAllMethod · 0.95
SelectMethod · 0.95
UnselectEventMethod · 0.95
UnselectMethod · 0.95
StateIsMethod · 0.80
SetFocusMethod · 0.80
NeedsRenderMethod · 0.80
AsCoreTreeMethod · 0.65
moveDownMethod · 0.45
moveUpMethod · 0.45

Tested by

no test coverage detected