@@ -847,47 +847,56 @@ class TreeView
847847 @element .style .display = ' '
848848
849849 onMouseDown : (e ) ->
850- if entryToSelect = e .target .closest (' .entry' )
851- e .stopPropagation ()
850+ return unless entryToSelect = e .target .closest (' .entry' )
852851
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 ()
855853
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 ' )
864862
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
878866 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 ()
881888
882889 onMouseUp : (e ) ->
883890 return unless @selectOnMouseUp ?
884891
885- {shiftKey , metaKey , ctrlKey } = @selectOnMouseUp
892+ {shiftKey , cmdKey } = @selectOnMouseUp
886893 @selectOnMouseUp = null
887894
888895 return unless entryToSelect = e .target .closest (' .entry' )
889896
890- if shiftKey and (metaKey or (ctrlKey and process .platform isnt ' darwin' ))
897+ e .stopPropagation ()
898+
899+ if shiftKey and cmdKey
891900 # select continuous from @lastFocusedElement but leave others
892901 @ selectContinuousEntries (entryToSelect, false )
893902 @ toggleMultiSelectMenu ()
@@ -896,7 +905,7 @@ class TreeView
896905 @ selectContinuousEntries (entryToSelect)
897906 @ toggleMultiSelectMenu ()
898907 # 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
900909 @ deselect ([entryToSelect])
901910 @lastFocusedElement = entryToSelect
902911 @ toggleMultiSelectMenu ()
0 commit comments