@@ -847,47 +847,56 @@ class TreeView
847
847
@element .style .display = ' '
848
848
849
849
onMouseDown : (e ) ->
850
- if entryToSelect = e .target .closest (' .entry' )
851
- e .stopPropagation ()
850
+ return unless entryToSelect = e .target .closest (' .entry' )
852
851
853
- # return early if we're opening a contextual menu (right click) during multi-select mode
854
- if @ multiSelectEnabled () and entryToSelect .classList .contains (' selected' )
852
+ e .stopPropagation ()
855
853
856
- # mouse right click or ctrl click as right click on darwin platforms
857
- if e . button is 2 or ( e . ctrlKey and process . platform is ' darwin' )
858
- return
859
- else
860
- # allow select if not dragging
861
- { shiftKey , metaKey , ctrlKey } = e
862
- @selectOnMouseUp = {shiftKey, metaKey, ctrlKey}
863
- return
854
+ # TODO: meta+ click and ctrl+ click should not do the same thing on Windows.
855
+ # Right now removing metaKey if platform is not darwin breaks tests
856
+ # that set the metaKey to true when simulating a cmd+click on macos
857
+ # and ctrl+click on windows and linux.
858
+ cmdKey = e . metaKey or ( e . ctrlKey and process . platform isnt ' darwin ' )
859
+
860
+ # return early if clicking on a selected entry
861
+ if entryToSelect . classList . contains ( ' selected ' )
864
862
865
- if e .shiftKey and (e .metaKey or (e .ctrlKey and process .platform isnt ' darwin' ))
866
- # select continuous from @lastFocusedElement but leave others
867
- @ selectContinuousEntries (entryToSelect, false )
868
- @ toggleMultiSelectMenu ()
869
- else if e .shiftKey
870
- # select continuous from @lastFocusedElement and deselect rest
871
- @ selectContinuousEntries (entryToSelect)
872
- @ toggleMultiSelectMenu ()
873
- # only allow ctrl click for multi selection on non darwin systems
874
- else if e .metaKey or (e .ctrlKey and process .platform isnt ' darwin' )
875
- @ selectMultipleEntries (entryToSelect)
876
- @lastFocusedElement = entryToSelect
877
- @ toggleMultiSelectMenu ()
863
+ # mouse right click or ctrl click as right click on darwin platforms
864
+ if e .button is 2 or (e .ctrlKey and process .platform is ' darwin' )
865
+ return
878
866
else
879
- @ selectEntry (entryToSelect)
880
- @ showFullMenu ()
867
+ # allow click on mouseup if not dragging
868
+ {shiftKey } = e
869
+ @selectOnMouseUp = {shiftKey, cmdKey}
870
+ return
871
+
872
+ if e .shiftKey and cmdKey
873
+ # select continuous from @lastFocusedElement but leave others
874
+ @ selectContinuousEntries (entryToSelect, false )
875
+ @ toggleMultiSelectMenu ()
876
+ else if e .shiftKey
877
+ # select continuous from @lastFocusedElement and deselect rest
878
+ @ selectContinuousEntries (entryToSelect)
879
+ @ toggleMultiSelectMenu ()
880
+ # only allow ctrl click for multi selection on non darwin systems
881
+ else if cmdKey
882
+ @ selectMultipleEntries (entryToSelect)
883
+ @lastFocusedElement = entryToSelect
884
+ @ toggleMultiSelectMenu ()
885
+ else
886
+ @ selectEntry (entryToSelect)
887
+ @ showFullMenu ()
881
888
882
889
onMouseUp : (e ) ->
883
890
return unless @selectOnMouseUp ?
884
891
885
- {shiftKey , metaKey , ctrlKey } = @selectOnMouseUp
892
+ {shiftKey , cmdKey } = @selectOnMouseUp
886
893
@selectOnMouseUp = null
887
894
888
895
return unless entryToSelect = e .target .closest (' .entry' )
889
896
890
- if shiftKey and (metaKey or (ctrlKey and process .platform isnt ' darwin' ))
897
+ e .stopPropagation ()
898
+
899
+ if shiftKey and cmdKey
891
900
# select continuous from @lastFocusedElement but leave others
892
901
@ selectContinuousEntries (entryToSelect, false )
893
902
@ toggleMultiSelectMenu ()
@@ -896,7 +905,7 @@ class TreeView
896
905
@ selectContinuousEntries (entryToSelect)
897
906
@ toggleMultiSelectMenu ()
898
907
# only allow ctrl click for multi selection on non darwin systems
899
- else if metaKey or (ctrlKey and process . platform isnt ' darwin ' )
908
+ else if cmdKey
900
909
@ deselect ([entryToSelect])
901
910
@lastFocusedElement = entryToSelect
902
911
@ toggleMultiSelectMenu ()
0 commit comments