From 6e0dff902dd0b5b0f9eaf084d48bd4541ed95270 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Mon, 22 May 2017 16:06:58 -0500 Subject: [PATCH 1/4] fix unselect multiple entiries on right click --- lib/tree-view.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tree-view.coffee b/lib/tree-view.coffee index 1c9ceba6..32d24d29 100644 --- a/lib/tree-view.coffee +++ b/lib/tree-view.coffee @@ -803,7 +803,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 From ba9b331bb98a1d4e982f99c93f1f6df838fa8d4b Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Mon, 22 May 2017 22:49:30 -0500 Subject: [PATCH 2/4] add test --- spec/tree-view-spec.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/spec/tree-view-spec.js b/spec/tree-view-spec.js index e56c69cf..e83efd10 100644 --- a/spec/tree-view-spec.js +++ b/spec/tree-view-spec.js @@ -43,4 +43,25 @@ describe('TreeView', () => { ) }) }) + + describe('clicking', () => { + it('should leave multiple entries selected on right click', () => { + const treeView = new TreeView({}) + const entries = treeView.roots[0].entries + treeView.selectEntry(entries.children[0]) + treeView.selectMultipleEntries(entries.children[1]) + treeView.showMultiSelectMenu() + + 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); + }) + }); }) From 6f72f974b4e78f3fce7e922aeb8d7222b51f57ee Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Fri, 7 Jul 2017 13:46:17 -0500 Subject: [PATCH 3/4] add check for multi-select --- spec/tree-view-spec.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spec/tree-view-spec.js b/spec/tree-view-spec.js index e83efd10..15a7670e 100644 --- a/spec/tree-view-spec.js +++ b/spec/tree-view-spec.js @@ -53,7 +53,9 @@ describe('TreeView', () => { treeView.showMultiSelectMenu() let child = entries.children[0]; - while (child.children.length > 0 && (child = child.firstChild)); + while (child.children.length > 0) { + child = child.firstChild; + } treeView.onMouseDown({ stopPropagation() {}, @@ -62,6 +64,7 @@ describe('TreeView', () => { }) expect(treeView.getSelectedEntries().length).toBe(2); + expect(treeView.multiSelectEnabled()).toBe(true); }) }); }) From bff166cf4bb226bc138620fbecbd1d589bd9c45f Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Thu, 20 Jul 2017 23:25:29 -0500 Subject: [PATCH 4/4] use treeView.onMouseDown --- spec/tree-view-spec.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/spec/tree-view-spec.js b/spec/tree-view-spec.js index 15a7670e..ece93794 100644 --- a/spec/tree-view-spec.js +++ b/spec/tree-view-spec.js @@ -48,9 +48,19 @@ describe('TreeView', () => { it('should leave multiple entries selected on right click', () => { const treeView = new TreeView({}) const entries = treeView.roots[0].entries - treeView.selectEntry(entries.children[0]) - treeView.selectMultipleEntries(entries.children[1]) - treeView.showMultiSelectMenu() + + 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) { @@ -60,7 +70,7 @@ describe('TreeView', () => { treeView.onMouseDown({ stopPropagation() {}, target: child, - button: 2 + button: 2, }) expect(treeView.getSelectedEntries().length).toBe(2);