From 3170ee7692ef30ee67f26219b19b2b4115c01a56 Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Sun, 28 Jul 2019 21:24:32 +0200 Subject: Hide and disable open_all/cut/copy/delete/properties when opening bookmarks/history context menu with no selection This resolves #882 (by not offering options that can't be used) --- toolkit/components/places/PlacesUtils.jsm | 9 ++++++--- .../places/tests/unit/test_utils_getURLsForContainerNode.js | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'toolkit') diff --git a/toolkit/components/places/PlacesUtils.jsm b/toolkit/components/places/PlacesUtils.jsm index 323fa41a1..5f6e81f18 100644 --- a/toolkit/components/places/PlacesUtils.jsm +++ b/toolkit/components/places/PlacesUtils.jsm @@ -1341,7 +1341,7 @@ this.PlacesUtils = { * The container node to search through. * @returns true if the node contains uri nodes, false otherwise. */ - hasChildURIs: function PU_hasChildURIs(aNode) { + hasChildURIs: function PU_hasChildURIs(aNode, aMultiple=false) { if (!this.nodeIsContainer(aNode)) return false; @@ -1357,11 +1357,14 @@ this.PlacesUtils = { root.containerOpen = true; } + let foundFirst = !aMultiple; let found = false; for (let i = 0; i < root.childCount && !found; i++) { let child = root.getChild(i); - if (this.nodeIsURI(child)) - found = true; + if (this.nodeIsURI(child)) { + found = foundFirst; + foundFirst = true; + } } if (!wasOpen) { diff --git a/toolkit/components/places/tests/unit/test_utils_getURLsForContainerNode.js b/toolkit/components/places/tests/unit/test_utils_getURLsForContainerNode.js index ecebce94a..3e2f88c21 100644 --- a/toolkit/components/places/tests/unit/test_utils_getURLsForContainerNode.js +++ b/toolkit/components/places/tests/unit/test_utils_getURLsForContainerNode.js @@ -165,6 +165,7 @@ function check_uri_nodes(aQuery, aOptions, aExpectedURINodes) { root.containerOpen = true; var node = root.getChild(0); do_check_eq(PU.hasChildURIs(node), aExpectedURINodes > 0); + do_check_eq(PU.hasChildURIs(node, true), aExpectedURINodes > 1); do_check_eq(PU.getURLsForContainerNode(node).length, aExpectedURINodes); root.containerOpen = false; } -- cgit v1.2.3