From a1f7ac506948730262466d9beec2359539e44a6f Mon Sep 17 00:00:00 2001 From: Oriol Brufau Date: Wed, 30 Aug 2017 07:27:00 -0400 Subject: [PATCH] Bug 1328008 - Stop collapsing TreeView nodes when clicking a value. r=Honza --- .../test/browser_jsonview_valid_json.js | 21 ++++++++++++------- .../shared/components/tree/tree-view.js | 5 ++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/devtools/client/jsonview/test/browser_jsonview_valid_json.js b/devtools/client/jsonview/test/browser_jsonview_valid_json.js index 83d0e1088379..9a34873ecc82 100644 --- a/devtools/client/jsonview/test/browser_jsonview_valid_json.js +++ b/devtools/client/jsonview/test/browser_jsonview_valid_json.js @@ -14,20 +14,25 @@ add_task(function* () { ok(tab.linkedBrowser.contentPrincipal.isNullPrincipal, "Should have null principal"); - let countBefore = yield getElementCount(".jsonPanelBox .treeTable .treeRow"); - ok(countBefore == 3, "There must be three rows"); + is(yield countRows(), 3, "There must be three rows"); let objectCellCount = yield getElementCount( ".jsonPanelBox .treeTable .objectCell"); - ok(objectCellCount == 1, "There must be one object cell"); + is(objectCellCount, 1, "There must be one object cell"); let objectCellText = yield getElementText( ".jsonPanelBox .treeTable .objectCell"); - ok(objectCellText == "", "The summary is hidden when object is expanded"); + is(objectCellText, "", "The summary is hidden when object is expanded"); - // Collapsed auto-expanded node. + // Clicking the value does not collapse it (so that it can be selected and copied). + yield clickJsonNode(".jsonPanelBox .treeTable .treeValueCell"); + is(yield countRows(), 3, "There must still be three rows"); + + // Clicking the label collapses the auto-expanded node. yield clickJsonNode(".jsonPanelBox .treeTable .treeLabel"); - - let countAfter = yield getElementCount(".jsonPanelBox .treeTable .treeRow"); - ok(countAfter == 1, "There must be one row"); + is(yield countRows(), 1, "There must be one row"); }); + +function countRows() { + return getElementCount(".jsonPanelBox .treeTable .treeRow"); +} diff --git a/devtools/client/shared/components/tree/tree-view.js b/devtools/client/shared/components/tree/tree-view.js index 237aaca6435c..9d7c76ab1b68 100644 --- a/devtools/client/shared/components/tree/tree-view.js +++ b/devtools/client/shared/components/tree/tree-view.js @@ -213,7 +213,10 @@ define(function (require, exports, module) { onClickRow: function (nodePath, event) { event.stopPropagation(); - this.toggle(nodePath); + let cell = event.target.closest("td"); + if (cell && cell.classList.contains("treeLabelCell")) { + this.toggle(nodePath); + } this.selectRow(nodePath); },