diff options
Diffstat (limited to 'application')
6 files changed, 128 insertions, 38 deletions
diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js index a51b73fe8..ba791f709 100644 --- a/application/palemoon/base/content/browser.js +++ b/application/palemoon/base/content/browser.js @@ -328,6 +328,67 @@ const gSessionHistoryObserver = { } }; +var gFindBarSettings = { + messageName: "Findbar:Keypress", + prefName: "accessibility.typeaheadfind", + findAsYouType: null, + + init: function() { + window.messageManager.addMessageListener(this.messageName, this); + + gPrefService.addObserver(this.prefName, this, false); + this.writeFindAsYouType(); + }, + + uninit: function() { + window.messageManager.removeMessageListener(this.messageName, this); + + try { + gPrefService.removeObserver(this.prefName, this); + } catch (ex) { + Cu.reportError(ex); + } + }, + + observe: function(aSubject, aTopic, aData) { + if (aTopic != "nsPref:changed") { + return; + } + + this.writeFindAsYouType(); + }, + + writeFindAsYouType: function() { + this.findAsYouType = gPrefService.getBoolPref(this.prefName); + }, + + receiveMessage: function(aMessage) { + switch (aMessage.name) { + case this.messageName: + // If the find bar for chrome window's context is not yet alive, + // only initialize it if there's a possibility FindAsYouType + // will be used. + // There's no point in doing it for most random keypresses. + if (!gFindBarInitialized && aMessage.data.shouldFastFind) { + let shouldFastFind = this.findAsYouType; + if (!shouldFastFind) { + // Please keep in sync with toolkit/content/widgets/findbar.xml + const FAYT_LINKS_KEY = "'"; + const FAYT_TEXT_KEY = "/"; + let charCode = aMessage.data.fakeEvent.charCode; + let key = charCode ? String.fromCharCode(charCode) : null; + shouldFastFind = key == FAYT_LINKS_KEY || key == FAYT_TEXT_KEY; + } + if (shouldFastFind) { + // Make sure we return the result. + return gFindBar.receiveMessage(aMessage); + } + } + break; + } + } +}; + var gURLBarSettings = { prefSuggest: "browser.urlbar.suggest.", /* @@ -730,6 +791,7 @@ var gBrowserInit = { #ifdef MOZ_DEVTOOLS DevToolsTheme.init(); #endif + gFindBarSettings.init(); messageManager.loadFrameScript("chrome://browser/content/content.js", true); messageManager.loadFrameScript("chrome://browser/content/content-sessionStore.js", true); @@ -1305,6 +1367,7 @@ var gBrowserInit = { #ifdef MOZ_DEVTOOLS DevToolsTheme.uninit(); #endif + gFindBarSettings.uninit(); UserAgentCompatibility.uninit(); diff --git a/application/palemoon/base/content/sync/quota.js b/application/palemoon/base/content/sync/quota.js index 454052754..a42fbc722 100644 --- a/application/palemoon/base/content/sync/quota.js +++ b/application/palemoon/base/content/sync/quota.js @@ -193,10 +193,15 @@ var gUsageTreeView = { return; } - toremove = [this._byname[coll].title for each (coll in toremove)]; - toremove = toremove.join(gSyncQuota.bundle.getString("quota.list.separator")); + // Tycho: toremove = [this._byname[coll].title for each (coll in toremove)]; + let toremovetitles = []; + for (let coll in toremove) { + toremovetitles.push(this._byname[coll].title); + } + + toremovetitles = toremovetitles.join(gSyncQuota.bundle.getString("quota.list.separator")); caption.firstChild.nodeValue = gSyncQuota.bundle.getFormattedString( - "quota.removal.label", [toremove]); + "quota.removal.label", [toremovetitles]); if (freeup) caption.firstChild.nodeValue += gSyncQuota.bundle.getFormattedString( "quota.freeup.label", gSyncQuota.convertKB(freeup)); diff --git a/application/palemoon/base/content/tabbrowser.xml b/application/palemoon/base/content/tabbrowser.xml index 12319a62b..c054318ec 100644 --- a/application/palemoon/base/content/tabbrowser.xml +++ b/application/palemoon/base/content/tabbrowser.xml @@ -1669,8 +1669,22 @@ var tabsToClose; switch (aCloseTabs) { case this.closingTabsEnum.ALL: - tabsToClose = this.tabs.length - this._removingTabs.length - - gBrowser._numPinnedTabs; + // If there are multiple windows, pinned tabs will be closed, so + // we warn about them, too; if there is just one window, pinned + // tabs should come back on restart, so exclude them from warning. + var numberOfWindows = 0; + var browserEnum = Services.wm.getEnumerator("navigator:browser"); + while (browserEnum.hasMoreElements() && numberOfWindows < 2) { + numberOfWindows++; + browserEnum.getNext(); + } + if (numberOfWindows > 1) { + tabsToClose = this.tabs.length - this._removingTabs.length + } + else { + tabsToClose = this.tabs.length - this._removingTabs.length - + gBrowser._numPinnedTabs; + } break; case this.closingTabsEnum.OTHER: tabsToClose = this.visibleTabs.length - 1 - gBrowser._numPinnedTabs; @@ -3092,26 +3106,6 @@ window.focus(); break; } - case "Findbar:Keypress": - // If the find bar for this tab is not yet alive, only initialize - // it if there's a possibility FindAsYouType will be used. - // There's no point in doing it for most random keypresses. - if (!gFindBarInitialized && aMessage.data.shouldFastFind) { - let shouldFastFind = this._findAsYouType; - if (!shouldFastFind) { - // Please keep in sync with toolkit/content/widgets/findbar.xml - const FAYT_LINKS_KEY = "'"; - const FAYT_TEXT_KEY = "/"; - let charCode = aMessage.data.fakeEvent.charCode; - let key = charCode ? String.fromCharCode(charCode) : null; - shouldFastFind = key == FAYT_LINKS_KEY || key == FAYT_TEXT_KEY; - } - if (shouldFastFind) { - // Make sure we return the result. - return gFindBar.receiveMessage(aMessage); - } - } - break; } ]]></body> </method> @@ -3178,11 +3172,6 @@ this.mCurrentBrowser); } messageManager.addMessageListener("DOMWebNotificationClicked", this); - - // To correctly handle keypresses for potential FindAsYouType, while - // the tab's find bar is not yet initialized. - this._findAsYouType = Services.prefs.getBoolPref("accessibility.typeaheadfind"); - messageManager.addMessageListener("Findbar:Keypress", this); ]]> </constructor> @@ -3437,7 +3426,6 @@ tab.setAttribute("onerror", "this.removeAttribute('image');"); this.adjustTabstrip(); - Services.prefs.addObserver("accessibility.typeaheadfind", this._prefObserver, false); Services.prefs.addObserver("browser.tabs.", this._prefObserver, false); window.addEventListener("resize", this, false); window.addEventListener("load", this, false); @@ -3453,7 +3441,6 @@ <destructor> <![CDATA[ - Services.prefs.removeObserver("accessibility.typeaheadfind", this._prefObserver); Services.prefs.removeObserver("browser.tabs.", this._prefObserver); ]]> </destructor> @@ -3519,9 +3506,6 @@ observe: function (subject, topic, data) { switch (data) { - case "accessibility.typeaheadfind": - this._findAsYouType = Services.prefs.getBoolPref(data); - break; case "browser.tabs.closeButtons": this.tabContainer.mCloseButtons = Services.prefs.getIntPref(data); this.tabContainer.adjustTabstrip(); diff --git a/application/palemoon/branding/shared/pref/preferences.inc b/application/palemoon/branding/shared/pref/preferences.inc index a3cfcd138..51a1852e6 100644 --- a/application/palemoon/branding/shared/pref/preferences.inc +++ b/application/palemoon/branding/shared/pref/preferences.inc @@ -110,6 +110,14 @@ pref("image.mem.decode_bytes_at_a_time", 65536); //larger chunks // ============================================================================ +// ===| Sync |================================================================= + +// Sync server URL +pref("services.sync.serverURL","https://pmsync.palemoon.org/sync/index.php/"); +pref("services.sync.jpake.serverURL","https://keyserver.palemoon.org/"); + +// ============================================================================ + // ===| Misc. |================================================================ // store sessions less frequently to prevent redundant mem usage by storing too much diff --git a/application/palemoon/components/places/PlacesUIUtils.jsm b/application/palemoon/components/places/PlacesUIUtils.jsm index dd0695f78..f62535613 100644 --- a/application/palemoon/components/places/PlacesUIUtils.jsm +++ b/application/palemoon/components/places/PlacesUIUtils.jsm @@ -1136,6 +1136,33 @@ this.PlacesUIUtils = { } } return queryName; + }, + + /** + * Returns the passed URL with a #moz-resolution fragment + * for the specified dimensions and devicePixelRatio. + * + * @param aWindow + * A window from where we want to get the device + * pixel Ratio + * + * @param aURL + * The URL where we should add the fragment + * + * @param aWidth + * The target image width + * + * @param aHeight + * The target image height + * + * @return The URL with the fragment at the end + */ + getImageURLForResolution: + function PUIU_getImageURLForResolution(aWindow, aURL, aWidth = 16, aHeight = 16) { + let width = Math.round(aWidth * aWindow.devicePixelRatio); + let height = Math.round(aHeight * aWindow.devicePixelRatio); + return aURL + (aURL.includes("#") ? "&" : "#") + + "-moz-resolution=" + width + "," + height; } }; diff --git a/application/palemoon/components/places/content/browserPlacesViews.js b/application/palemoon/components/places/content/browserPlacesViews.js index 4ab80cac6..eec7274a4 100644 --- a/application/palemoon/components/places/content/browserPlacesViews.js +++ b/application/palemoon/components/places/content/browserPlacesViews.js @@ -338,7 +338,8 @@ PlacesViewBase.prototype = { let icon = aPlacesNode.icon; if (icon) - element.setAttribute("image", icon); + element.setAttribute("image", + PlacesUIUtils.getImageURLForResolution(window, icon)); } element._placesNode = aPlacesNode; @@ -464,7 +465,8 @@ PlacesViewBase.prototype = { if (!icon) elt.removeAttribute("image"); else if (icon != elt.getAttribute("image")) - elt.setAttribute("image", icon); + elt.setAttribute("image", + PlacesUIUtils.getImageURLForResolution(window, icon)); }, nodeAnnotationChanged: @@ -966,7 +968,8 @@ PlacesToolbar.prototype = { button.setAttribute("label", aChild.title || ""); let icon = aChild.icon; if (icon) - button.setAttribute("image", icon); + button.setAttribute("image", + PlacesUIUtils.getImageURLForResolution(window, icon)); if (PlacesUtils.containerTypes.indexOf(type) != -1) { button.setAttribute("type", "menu"); |