more updated version of the function
Code:
function TMP_closeWindow(){
if (!closeWindow(false))
return false;
var wm = Cc["@mozilla.org/appshell/window-mediator;1"].
getService(Ci.nsIWindowMediator);
var windowcount = 0;
var pagecount = 0;
var browserEnum = wm.getEnumerator("navigator:browser");
while (browserEnum.hasMoreElements()) {
windowcount++;
var browser = browserEnum.getNext();
var tabbrowser = browser.document.getElementById("content");
if (tabbrowser)
pagecount += tabbrowser.browsers.length;
}
var quitType = arguments.callee.caller.caller.name;
var showPrompt = true;
if (/^Mac/.test(navigator.platform) || pagecount < 2)
showPrompt = false;
else {
try {
var sessionWillBeSaved = gPref.getIntPref("browser.startup.page") == 3 ||
gPref.getBoolPref("browser.sessionstore.resume_session_once");
if (sessionWillBeSaved || !gPref.getBoolPref("browser.warnOnQuit"))
showPrompt = false;
// its can't be restart here, restart don't call closeWindow
else if (quitType == "restart")
showPrompt = gPref.getBoolPref("browser.warnOnRestart");
else
showPrompt = gPref.getBoolPref("browser.tabs.warnOnClose");
} catch (ex) {}
}
var _canClose = true;
// we only show warnAboutClose if firefox didn't do it already
// if showPrompt is true then prompt was shown by firefox code from BrowserGlue.prototype._onQuitRequest
if (!showPrompt) {
var pref = "extensions.tabmix.warnAboutClosingTabs.timeout";
var startTime = new Date().valueOf();
var oldTime = gPref.prefHasUserValue(pref) ? gPref.getCharPref(pref) : 0;
_canClose = getBrowser().warnAboutClosingTabs("All_onExit");
gPref.setCharPref(pref, oldTime*1 + (new Date().valueOf() - startTime));
}
if (_canClose) {
var isRestartApp = quitType == "restartApp";
SessionManager.deinit(numberOfWindows() == 1, !isRestartApp);
}
return _canClose;
}
there is still no confirm dialog on File > Exit or when using restart, but i'm not think that we need the confirm dialog on those cases.
maybe i will add a new pref so user can choose if they like to see this dialog when closing the last window when session will be save ?