diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-06-06 14:24:03 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-06-06 14:24:03 +0200 |
commit | 00dee2f05b854d8f36747ac8459417012bb7a61f (patch) | |
tree | dfac292b3e714db7f0605b5962e8bf3003262380 | |
parent | a421f38160599152cd409e4fabd434a224f78487 (diff) | |
download | UXP-00dee2f05b854d8f36747ac8459417012bb7a61f.tar UXP-00dee2f05b854d8f36747ac8459417012bb7a61f.tar.gz UXP-00dee2f05b854d8f36747ac8459417012bb7a61f.tar.lz UXP-00dee2f05b854d8f36747ac8459417012bb7a61f.tar.xz UXP-00dee2f05b854d8f36747ac8459417012bb7a61f.zip |
Add a helper function in PlacesUIUtils.jsm to cater to HiDPI favicon display with #-moz-resolution=w,h
-rw-r--r-- | application/palemoon/components/places/PlacesUIUtils.jsm | 27 | ||||
-rw-r--r-- | application/palemoon/components/places/content/browserPlacesViews.js | 9 |
2 files changed, 33 insertions, 3 deletions
diff --git a/application/palemoon/components/places/PlacesUIUtils.jsm b/application/palemoon/components/places/PlacesUIUtils.jsm index dd0695f78..e90c84152 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.contains("#") ? "&" : "#") + + "-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"); |