diff --git a/lib/tree-view.coffee b/lib/tree-view.coffee index 6b951498..167e72b2 100644 --- a/lib/tree-view.coffee +++ b/lib/tree-view.coffee @@ -819,7 +819,7 @@ class TreeView # return early if we're opening a contextual menu (right click) during multi-select mode if @multiSelectEnabled() and - e.target.classList.contains('selected') and + entryToSelect.classList.contains('selected') and # mouse right click or ctrl click as right click on darwin platforms (e.button is 2 or e.ctrlKey and process.platform is 'darwin') return diff --git a/spec/tree-view-spec.js b/spec/tree-view-spec.js index e56c69cf..ece93794 100644 --- a/spec/tree-view-spec.js +++ b/spec/tree-view-spec.js @@ -43,4 +43,38 @@ describe('TreeView', () => { ) }) }) + + describe('clicking', () => { + it('should leave multiple entries selected on right click', () => { + const treeView = new TreeView({}) + const entries = treeView.roots[0].entries + + treeView.onMouseDown({ + stopPropagation() {}, + target: entries.children[0], + button: 0, + }) + + treeView.onMouseDown({ + stopPropagation() {}, + target: entries.children[1], + button: 0, + metaKey: true, + }) + + let child = entries.children[0]; + while (child.children.length > 0) { + child = child.firstChild; + } + + treeView.onMouseDown({ + stopPropagation() {}, + target: child, + button: 2, + }) + + expect(treeView.getSelectedEntries().length).toBe(2); + expect(treeView.multiSelectEnabled()).toBe(true); + }) + }); })