@@ -821,47 +821,56 @@ class TreeView
821
821
@element .style .display = ' '
822
822
823
823
onMouseDown : (e ) ->
824
- if entryToSelect = e .target .closest (' .entry' )
825
- e .stopPropagation ()
824
+ return unless entryToSelect = e .target .closest (' .entry' )
826
825
827
- # return early if we're opening a contextual menu (right click) during multi-select mode
828
- if @ multiSelectEnabled () and entryToSelect .classList .contains (' selected' )
826
+ e .stopPropagation ()
829
827
830
- # mouse right click or ctrl click as right click on darwin platforms
831
- if e . button is 2 or ( e . ctrlKey and process . platform is ' darwin' )
832
- return
833
- else
834
- # allow select if not dragging
835
- { shiftKey , metaKey , ctrlKey } = e
836
- @selectOnMouseUp = {shiftKey, metaKey, ctrlKey}
837
- return
828
+ # TODO: meta+ click and ctrl+ click should not do the same thing on Windows.
829
+ # Right now removing metaKey if platform is not darwin breaks tests
830
+ # that set the metaKey to true when simulating a cmd+click on macos
831
+ # and ctrl+click on windows and linux.
832
+ cmdKey = e . metaKey or ( e . ctrlKey and process . platform isnt ' darwin ' )
833
+
834
+ # return early if clicking on a selected entry
835
+ if entryToSelect . classList . contains ( ' selected ' )
838
836
839
- if e .shiftKey and (e .metaKey or (e .ctrlKey and process .platform isnt ' darwin' ))
840
- # select continuous from @lastFocusedElement but leave others
841
- @ selectContinuousEntries (entryToSelect, false )
842
- @ toggleMultiSelectMenu ()
843
- else if e .shiftKey
844
- # select continuous from @lastFocusedElement and deselect rest
845
- @ selectContinuousEntries (entryToSelect)
846
- @ toggleMultiSelectMenu ()
847
- # only allow ctrl click for multi selection on non darwin systems
848
- else if e .metaKey or (e .ctrlKey and process .platform isnt ' darwin' )
849
- @ selectMultipleEntries (entryToSelect)
850
- @lastFocusedElement = entryToSelect
851
- @ toggleMultiSelectMenu ()
837
+ # mouse right click or ctrl click as right click on darwin platforms
838
+ if e .button is 2 or (e .ctrlKey and process .platform is ' darwin' )
839
+ return
852
840
else
853
- @ selectEntry (entryToSelect)
854
- @ showFullMenu ()
841
+ # allow click on mouseup if not dragging
842
+ {shiftKey } = e
843
+ @selectOnMouseUp = {shiftKey, cmdKey}
844
+ return
845
+
846
+ if e .shiftKey and cmdKey
847
+ # select continuous from @lastFocusedElement but leave others
848
+ @ selectContinuousEntries (entryToSelect, false )
849
+ @ toggleMultiSelectMenu ()
850
+ else if e .shiftKey
851
+ # select continuous from @lastFocusedElement and deselect rest
852
+ @ selectContinuousEntries (entryToSelect)
853
+ @ toggleMultiSelectMenu ()
854
+ # only allow ctrl click for multi selection on non darwin systems
855
+ else if cmdKey
856
+ @ selectMultipleEntries (entryToSelect)
857
+ @lastFocusedElement = entryToSelect
858
+ @ toggleMultiSelectMenu ()
859
+ else
860
+ @ selectEntry (entryToSelect)
861
+ @ showFullMenu ()
855
862
856
863
onMouseUp : (e ) ->
857
864
return unless @selectOnMouseUp ?
858
865
859
- {shiftKey , metaKey , ctrlKey } = @selectOnMouseUp
866
+ {shiftKey , cmdKey } = @selectOnMouseUp
860
867
@selectOnMouseUp = null
861
868
862
869
return unless entryToSelect = e .target .closest (' .entry' )
863
870
864
- if shiftKey and (metaKey or (ctrlKey and process .platform isnt ' darwin' ))
871
+ e .stopPropagation ()
872
+
873
+ if shiftKey and cmdKey
865
874
# select continuous from @lastFocusedElement but leave others
866
875
@ selectContinuousEntries (entryToSelect, false )
867
876
@ toggleMultiSelectMenu ()
@@ -870,7 +879,7 @@ class TreeView
870
879
@ selectContinuousEntries (entryToSelect)
871
880
@ toggleMultiSelectMenu ()
872
881
# only allow ctrl click for multi selection on non darwin systems
873
- else if metaKey or (ctrlKey and process . platform isnt ' darwin ' )
882
+ else if cmdKey
874
883
@ deselect ([entryToSelect])
875
884
@lastFocusedElement = entryToSelect
876
885
@ toggleMultiSelectMenu ()
0 commit comments