forked from mirrors/gecko-dev
The overlay was responsible for script loading and defining three elements (bhTooltip, placesCommands, placesContext). In the majority of places where the overlay was included only part of it was used. To remove the overlay, the elements were each split into include files and moved into where they were used. For the scripts, a JS file was added that defines all the lazy modules and then this script, globalOverlay.js and utilityOverlay.js were inlined to everywhere that would have included them from the overlay. MozReview-Commit-ID: 8T5D46oYWLn --HG-- rename : browser/components/places/content/placesOverlay.xul => browser/components/places/content/placesCommands.inc.xul rename : browser/components/places/content/placesOverlay.xul => browser/components/places/content/placesContextMenu.inc.xul extra : rebase_source : c1071af4ea264a95183cbc65caae98feb23d58e5
108 lines
4.2 KiB
JavaScript
108 lines
4.2 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/* import-globals-from ../PlacesUIUtils.jsm */
|
|
/* import-globals-from ../../../../toolkit/components/places/PlacesUtils.jsm */
|
|
|
|
ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
|
|
|
|
let uidensity = window.top.document.documentElement.getAttribute("uidensity");
|
|
if (uidensity) {
|
|
document.documentElement.setAttribute("uidensity", uidensity);
|
|
}
|
|
|
|
var SidebarUtils = {
|
|
handleTreeClick: function SU_handleTreeClick(aTree, aEvent, aGutterSelect) {
|
|
// right-clicks are not handled here
|
|
if (aEvent.button == 2)
|
|
return;
|
|
|
|
var tbo = aTree.treeBoxObject;
|
|
var cell = tbo.getCellAt(aEvent.clientX, aEvent.clientY);
|
|
|
|
if (cell.row == -1 || cell.childElt == "twisty")
|
|
return;
|
|
|
|
var mouseInGutter = false;
|
|
if (aGutterSelect) {
|
|
var rect = tbo.getCoordsForCellItem(cell.row, cell.col, "image");
|
|
// getCoordsForCellItem returns the x coordinate in logical coordinates
|
|
// (i.e., starting from the left and right sides in LTR and RTL modes,
|
|
// respectively.) Therefore, we make sure to exclude the blank area
|
|
// before the tree item icon (that is, to the left or right of it in
|
|
// LTR and RTL modes, respectively) from the click target area.
|
|
var isRTL = window.getComputedStyle(aTree).direction == "rtl";
|
|
if (isRTL)
|
|
mouseInGutter = aEvent.clientX > rect.x;
|
|
else
|
|
mouseInGutter = aEvent.clientX < rect.x;
|
|
}
|
|
|
|
var metaKey = AppConstants.platform === "macosx" ? aEvent.metaKey
|
|
: aEvent.ctrlKey;
|
|
var modifKey = metaKey || aEvent.shiftKey;
|
|
var isContainer = tbo.view.isContainer(cell.row);
|
|
var openInTabs = isContainer &&
|
|
(aEvent.button == 1 ||
|
|
(aEvent.button == 0 && modifKey)) &&
|
|
PlacesUtils.hasChildURIs(aTree.view.nodeForTreeIndex(cell.row));
|
|
|
|
if (aEvent.button == 0 && isContainer && !openInTabs) {
|
|
tbo.view.toggleOpenState(cell.row);
|
|
} else if (!mouseInGutter && openInTabs &&
|
|
aEvent.originalTarget.localName == "treechildren") {
|
|
tbo.view.selection.select(cell.row);
|
|
PlacesUIUtils.openContainerNodeInTabs(aTree.selectedNode, aEvent, aTree);
|
|
} else if (!mouseInGutter && !isContainer &&
|
|
aEvent.originalTarget.localName == "treechildren") {
|
|
// Clear all other selection since we're loading a link now. We must
|
|
// do this *before* attempting to load the link since openURL uses
|
|
// selection as an indication of which link to load.
|
|
tbo.view.selection.select(cell.row);
|
|
PlacesUIUtils.openNodeWithEvent(aTree.selectedNode, aEvent);
|
|
}
|
|
},
|
|
|
|
handleTreeKeyPress: function SU_handleTreeKeyPress(aEvent) {
|
|
let node = aEvent.target.selectedNode;
|
|
if (node) {
|
|
if (aEvent.keyCode == KeyEvent.DOM_VK_RETURN)
|
|
PlacesUIUtils.openNodeWithEvent(node, aEvent);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* The following function displays the URL of a node that is being
|
|
* hovered over.
|
|
*/
|
|
handleTreeMouseMove: function SU_handleTreeMouseMove(aEvent) {
|
|
if (aEvent.target.localName != "treechildren")
|
|
return;
|
|
|
|
var tree = aEvent.target.parentNode;
|
|
var tbo = tree.treeBoxObject;
|
|
var cell = tbo.getCellAt(aEvent.clientX, aEvent.clientY);
|
|
|
|
// cell.row is -1 when the mouse is hovering an empty area within the tree.
|
|
// To avoid showing a URL from a previously hovered node for a currently
|
|
// hovered non-url node, we must clear the moused-over URL in these cases.
|
|
if (cell.row != -1) {
|
|
var node = tree.view.nodeForTreeIndex(cell.row);
|
|
if (PlacesUtils.nodeIsURI(node))
|
|
this.setMouseoverURL(node.uri);
|
|
else
|
|
this.setMouseoverURL("");
|
|
} else
|
|
this.setMouseoverURL("");
|
|
},
|
|
|
|
setMouseoverURL: function SU_setMouseoverURL(aURL) {
|
|
// When the browser window is closed with an open sidebar, the sidebar
|
|
// unload event happens after the browser's one. In this case
|
|
// top.XULBrowserWindow has been nullified already.
|
|
if (top.XULBrowserWindow) {
|
|
top.XULBrowserWindow.setOverLink(aURL, null);
|
|
}
|
|
}
|
|
};
|