зеркало из https://github.com/mozilla/gecko-dev.git
Bug 321954 - Make it easier for apps to hook into toolkit's printing component, patch nearly all by Ian Neal <iann_bugzilla@blueyonder.co.uk> with very little from me, r=gavin
This commit is contained in:
Родитель
6a854e4ffa
Коммит
36d38a4df6
|
@ -99,6 +99,7 @@ var gProgressCollapseTimer = null;
|
|||
var gPrefService = null;
|
||||
var appCore = null;
|
||||
var gBrowser = null;
|
||||
var gNavToolbox = null;
|
||||
var gSidebarCommand = "";
|
||||
|
||||
// Global variable that holds the nsContextMenu instance.
|
||||
|
@ -1029,8 +1030,7 @@ function delayedStartup()
|
|||
|
||||
SetPageProxyState("invalid");
|
||||
|
||||
var toolbox = document.getElementById("navigator-toolbox");
|
||||
toolbox.customizeDone = BrowserToolboxCustomizeDone;
|
||||
getNavToolbox().customizeDone = BrowserToolboxCustomizeDone;
|
||||
|
||||
// Set up Sanitize Item
|
||||
gSanitizeListener = new SanitizeListener();
|
||||
|
@ -2279,13 +2279,13 @@ function toggleAffectedChrome(aHide)
|
|||
// (*) menubar
|
||||
// (*) navigation bar
|
||||
// (*) bookmarks toolbar
|
||||
// (*) tabstrip
|
||||
// (*) browser messages
|
||||
// (*) sidebar
|
||||
// (*) find bar
|
||||
// (*) statusbar
|
||||
|
||||
var navToolbox = document.getElementById("navigator-toolbox");
|
||||
navToolbox.hidden = aHide;
|
||||
getNavToolbox().hidden = aHide;
|
||||
if (aHide)
|
||||
{
|
||||
gChromeState = {};
|
||||
|
@ -2293,6 +2293,9 @@ function toggleAffectedChrome(aHide)
|
|||
gChromeState.sidebarOpen = !sidebar.hidden;
|
||||
gSidebarCommand = sidebar.getAttribute("sidebarcommand");
|
||||
|
||||
gChromeState.hadTabStrip = gBrowser.getStripVisibility();
|
||||
gBrowser.setStripVisibilityTo(false);
|
||||
|
||||
var notificationBox = gBrowser.getNotificationBox();
|
||||
gChromeState.notificationsOpen = !notificationBox.notificationsHidden;
|
||||
notificationBox.notificationsHidden = aHide;
|
||||
|
@ -2305,6 +2308,10 @@ function toggleAffectedChrome(aHide)
|
|||
gFindBar.close();
|
||||
}
|
||||
else {
|
||||
if (gChromeState.hadTabStrip) {
|
||||
gBrowser.setStripVisibilityTo(true);
|
||||
}
|
||||
|
||||
if (gChromeState.notificationsOpen) {
|
||||
gBrowser.getNotificationBox().notificationsHidden = aHide;
|
||||
}
|
||||
|
@ -2333,6 +2340,11 @@ function onExitPrintPreview()
|
|||
toggleAffectedChrome(false);
|
||||
}
|
||||
|
||||
function getPPBrowser()
|
||||
{
|
||||
return document.getElementById("content");
|
||||
}
|
||||
|
||||
function getMarkupDocumentViewer()
|
||||
{
|
||||
return gBrowser.markupDocumentViewer;
|
||||
|
@ -3049,7 +3061,7 @@ function BrowserCustomizeToolbar()
|
|||
window.openDialog("chrome://global/content/customizeToolbar.xul",
|
||||
"CustomizeToolbar",
|
||||
"chrome,all,dependent",
|
||||
document.getElementById("navigator-toolbox"));
|
||||
getNavToolbox());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -3173,7 +3185,7 @@ var FullScreen =
|
|||
}
|
||||
}
|
||||
|
||||
var toolbox = document.getElementById("navigator-toolbox");
|
||||
var toolbox = getNavToolbox();
|
||||
if (aShow)
|
||||
toolbox.removeAttribute("inFullscreen");
|
||||
else
|
||||
|
@ -3872,7 +3884,7 @@ function onViewToolbarsPopupShowing(aEvent)
|
|||
|
||||
var firstMenuItem = popup.firstChild;
|
||||
|
||||
var toolbox = document.getElementById("navigator-toolbox");
|
||||
var toolbox = getNavToolbox();
|
||||
for (i = 0; i < toolbox.childNodes.length; ++i) {
|
||||
var toolbar = toolbox.childNodes[i];
|
||||
var toolbarName = toolbar.getAttribute("toolbarname");
|
||||
|
@ -3894,7 +3906,7 @@ function onViewToolbarsPopupShowing(aEvent)
|
|||
|
||||
function onViewToolbarCommand(aEvent)
|
||||
{
|
||||
var toolbox = document.getElementById("navigator-toolbox");
|
||||
var toolbox = getNavToolbox();
|
||||
var index = aEvent.originalTarget.getAttribute("toolbarindex");
|
||||
var toolbar = toolbox.childNodes[index];
|
||||
|
||||
|
@ -4386,7 +4398,6 @@ var contentAreaDNDObserver = {
|
|||
|
||||
};
|
||||
|
||||
// For extensions
|
||||
function getBrowser()
|
||||
{
|
||||
if (!gBrowser)
|
||||
|
@ -4394,6 +4405,13 @@ function getBrowser()
|
|||
return gBrowser;
|
||||
}
|
||||
|
||||
function getNavToolbox()
|
||||
{
|
||||
if (!gNavToolbox)
|
||||
gNavToolbox = document.getElementById("navigator-toolbox");
|
||||
return gNavToolbox;
|
||||
}
|
||||
|
||||
function MultiplexHandler(event)
|
||||
{ try {
|
||||
var node = event.target;
|
||||
|
|
|
@ -39,8 +39,6 @@
|
|||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
|
||||
var XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
|
||||
var gPrintSettingsAreGlobal = false;
|
||||
var gSavePrintSettings = false;
|
||||
|
||||
|
@ -88,6 +86,12 @@ var PrintUtils = {
|
|||
}
|
||||
},
|
||||
|
||||
// calling PrintUtils.printPreview() requires that you have three functions
|
||||
// in the global scope: getPPBrowser(), which returns the browser element in
|
||||
// the window print preview uses, getNavToolbox(), which returns the element
|
||||
// (usually the main toolbox element) before which the print preview toolbar
|
||||
// should be inserted, and getWebNavigation(), which returns the document's
|
||||
// nsIWebNavigation object
|
||||
printPreview: function (aEnterPPCallback, aExitPPCallback, aWindow)
|
||||
{
|
||||
// if we're already in PP mode, don't set the callbacks; chances
|
||||
|
@ -98,10 +102,12 @@ var PrintUtils = {
|
|||
this._onEnterPP = aEnterPPCallback;
|
||||
this._onExitPP = aExitPPCallback;
|
||||
} else {
|
||||
// hide the toolbar here -- it will be shown in
|
||||
// collapse the browser here -- it will be shown in
|
||||
// onEnterPrintPreview; this forces a reflow which fixes display
|
||||
// issues in bug 267422.
|
||||
pptoolbar.hidden = true;
|
||||
var browser = getPPBrowser();
|
||||
if (browser)
|
||||
browser.collapsed = true;
|
||||
}
|
||||
|
||||
this._webProgressPP = {};
|
||||
|
@ -122,7 +128,7 @@ var PrintUtils = {
|
|||
PPROMPTSVC.showProgress(this, webBrowserPrint, printSettings, this._obsPP, false,
|
||||
this._webProgressPP, ppParams, notifyOnOpen);
|
||||
if (ppParams.value) {
|
||||
var webNav = getBrowser().webNavigation;
|
||||
var webNav = getWebNavigation();
|
||||
ppParams.value.docTitle = webNav.document.title;
|
||||
ppParams.value.docURL = webNav.currentURI.spec;
|
||||
}
|
||||
|
@ -183,7 +189,6 @@ var PrintUtils = {
|
|||
return printSettings;
|
||||
},
|
||||
|
||||
_chromeState: {},
|
||||
_closeHandlerPP: null,
|
||||
_webProgressPP: null,
|
||||
_onEnterPP: null,
|
||||
|
@ -223,25 +228,22 @@ var PrintUtils = {
|
|||
var printPreviewTB = document.getElementById("print-preview-toolbar");
|
||||
if (printPreviewTB) {
|
||||
printPreviewTB.updateToolbar();
|
||||
printPreviewTB.hidden = false;
|
||||
var browser = getPPBrowser();
|
||||
if (browser)
|
||||
browser.collapsed = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// show the toolbar after we go into print preview mode so
|
||||
// that we can initialize the toolbar with total num pages
|
||||
var XUL_NS =
|
||||
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
printPreviewTB = document.createElementNS(XUL_NS, "toolbar");
|
||||
printPreviewTB.setAttribute("printpreview", true);
|
||||
printPreviewTB.setAttribute("id", "print-preview-toolbar");
|
||||
|
||||
#ifdef MOZ_PHOENIX
|
||||
getBrowser().parentNode.insertBefore(printPreviewTB, getBrowser());
|
||||
|
||||
// Tab browser...
|
||||
if ("getStripVisibility" in getBrowser()) {
|
||||
this._chromeState.hadTabStrip = getBrowser().getStripVisibility();
|
||||
getBrowser().setStripVisibilityTo(false);
|
||||
}
|
||||
#endif
|
||||
var navToolbox = getNavToolbox();
|
||||
navToolbox.parentNode.insertBefore(printPreviewTB, navToolbox);
|
||||
|
||||
// copy the window close handler
|
||||
if (document.documentElement.hasAttribute("onclose"))
|
||||
|
@ -267,24 +269,17 @@ var PrintUtils = {
|
|||
{
|
||||
window.removeEventListener("keypress", this.onKeyPressPP, true);
|
||||
|
||||
#ifdef MOZ_THUNDERBIRD
|
||||
BrowserExitPrintPreview(); // make the traditional call..don't do any of the inline toolbar browser stuff
|
||||
return;
|
||||
#endif
|
||||
|
||||
// restore the old close handler
|
||||
document.documentElement.setAttribute("onclose", this._closeHandlerPP);
|
||||
this._closeHandlerPP = null;
|
||||
|
||||
if ("getStripVisibility" in getBrowser())
|
||||
getBrowser().setStripVisibilityTo(this._chromeState.hadTabStrip);
|
||||
|
||||
var webBrowserPrint = this.getWebBrowserPrint(aWindow);
|
||||
webBrowserPrint.exitPrintPreview();
|
||||
|
||||
// remove the print preview toolbar
|
||||
var navToolbox = getNavToolbox();
|
||||
var printPreviewTB = document.getElementById("print-preview-toolbar");
|
||||
getBrowser().parentNode.removeChild(printPreviewTB);
|
||||
navToolbox.parentNode.removeChild(printPreviewTB);
|
||||
|
||||
var contentWindow = aWindow || window.content;
|
||||
contentWindow.focus();
|
||||
|
|
|
@ -272,6 +272,25 @@ function onExitPP()
|
|||
toolbox.hidden = false;
|
||||
}
|
||||
|
||||
function getPPBrowser()
|
||||
{
|
||||
return document.getElementById("content");
|
||||
}
|
||||
|
||||
function getNavToolbox()
|
||||
{
|
||||
return document.getElementById("appcontent");
|
||||
}
|
||||
|
||||
function getWebNavigation()
|
||||
{
|
||||
try {
|
||||
return gBrowser.webNavigation;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function ViewSourceGoToLine()
|
||||
{
|
||||
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
||||
|
|
Загрузка…
Ссылка в новой задаче