forked from mirrors/gecko-dev
This allows the JS to work in HTML documents, where whitespace is preserved. In XUL documents, whitespace is ignored when parsing so text nodes are generally not returned. The following changes were made, with manual cleanups as necessary (i.e. when firstChild actually refers to a text node, or when firstChild is used in a loop to empty out an element): firstChild->firstElementChild lastChild->lastElementChild nextSibling->nextElementSibling previousSibling->previousElementSibling childNodes->children MozReview-Commit-ID: 95NQ8syBhYw --HG-- extra : rebase_source : 186d805f7a2a56694dda9032aceac2dfe5424753
79 lines
2.4 KiB
JavaScript
79 lines
2.4 KiB
JavaScript
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
|
|
* 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/. */
|
|
|
|
// This file is loaded into the browser window scope.
|
|
/* eslint-env mozilla/browser-window */
|
|
|
|
/**
|
|
* Customization handler prepares this browser window for entering and exiting
|
|
* customization mode by handling customizationstarting and customizationending
|
|
* events.
|
|
*/
|
|
var CustomizationHandler = {
|
|
handleEvent(aEvent) {
|
|
switch (aEvent.type) {
|
|
case "customizationstarting":
|
|
this._customizationStarting();
|
|
break;
|
|
case "customizationending":
|
|
this._customizationEnding(aEvent.detail);
|
|
break;
|
|
}
|
|
},
|
|
|
|
isCustomizing() {
|
|
return document.documentElement.hasAttribute("customizing");
|
|
},
|
|
|
|
_customizationStarting() {
|
|
// Disable the toolbar context menu items
|
|
let menubar = document.getElementById("main-menubar");
|
|
for (let childNode of menubar.children)
|
|
childNode.setAttribute("disabled", true);
|
|
|
|
let cmd = document.getElementById("cmd_CustomizeToolbars");
|
|
cmd.setAttribute("disabled", "true");
|
|
|
|
UpdateUrlbarSearchSplitterState();
|
|
|
|
PlacesToolbarHelper.customizeStart();
|
|
},
|
|
|
|
_customizationEnding(aDetails) {
|
|
// Update global UI elements that may have been added or removed
|
|
if (aDetails.changed) {
|
|
gURLBar = document.getElementById("urlbar");
|
|
|
|
if (AppConstants.platform != "macosx")
|
|
updateEditUIVisibility();
|
|
|
|
// Hacky: update the PopupNotifications' object's reference to the iconBox,
|
|
// if it already exists, since it may have changed if the URL bar was
|
|
// added/removed.
|
|
if (!window.__lookupGetter__("PopupNotifications")) {
|
|
PopupNotifications.iconBox =
|
|
document.getElementById("notification-popup-box");
|
|
}
|
|
|
|
}
|
|
|
|
PlacesToolbarHelper.customizeDone();
|
|
|
|
UpdateUrlbarSearchSplitterState();
|
|
|
|
// Update the urlbar
|
|
URLBarSetURI();
|
|
XULBrowserWindow.asyncUpdateUI();
|
|
|
|
// Re-enable parts of the UI we disabled during the dialog
|
|
let menubar = document.getElementById("main-menubar");
|
|
for (let childNode of menubar.children)
|
|
childNode.setAttribute("disabled", false);
|
|
let cmd = document.getElementById("cmd_CustomizeToolbars");
|
|
cmd.removeAttribute("disabled");
|
|
|
|
gBrowser.selectedBrowser.focus();
|
|
}
|
|
};
|