diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-08-20 13:11:56 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-08-20 13:31:38 +0200 |
commit | b5ee49d85ae054c0176248c1c4f5b84b57afcb1f (patch) | |
tree | 2eb441c87ff39bb79e51219ef3e3adbc3a268de4 | |
parent | 134fdc7ec46c242baf924db8e3fea9f360d21e73 (diff) | |
download | uxp-b5ee49d85ae054c0176248c1c4f5b84b57afcb1f.tar.gz |
Re-implement custom background color of standalone images.
This resolves #717.
Note: this does not affect other applications because the platform
default is to use the "darknoise" background image for standalone
image, which effectively overrides a bg color.
-rw-r--r-- | dom/html/ImageDocument.cpp | 17 | ||||
-rw-r--r-- | dom/html/ImageDocument.h | 3 | ||||
-rw-r--r-- | modules/libpref/init/all.js | 3 |
3 files changed, 23 insertions, 0 deletions
diff --git a/dom/html/ImageDocument.cpp b/dom/html/ImageDocument.cpp index 200bb5d46d..f83a804bef 100644 --- a/dom/html/ImageDocument.cpp +++ b/dom/html/ImageDocument.cpp @@ -40,12 +40,14 @@ #include "nsThreadUtils.h" #include "nsIScrollableFrame.h" #include "nsContentUtils.h" +#include "nsCSSParser.h" // for CSS colors on the background #include "mozilla/dom/Element.h" #include "mozilla/Preferences.h" #include <algorithm> #define AUTOMATIC_IMAGE_RESIZING_PREF "browser.enable_automatic_image_resizing" #define CLICK_IMAGE_RESIZING_PREF "browser.enable_click_image_resizing" +#define STANDALONE_IMAGE_BACKGROUND_COLOR_PREF "browser.display.standalone_images.background_color" //XXX A hack needed for Firefox's site specific zoom. #define SITE_SPECIFIC_ZOOM "browser.zoom.siteSpecific" @@ -170,6 +172,8 @@ ImageDocument::Init() mClickResizingEnabled = Preferences::GetBool(CLICK_IMAGE_RESIZING_PREF); mShouldResize = mResizeImageByDefault; mFirstResize = true; + + mBackgroundColor = Preferences::GetString(STANDALONE_IMAGE_BACKGROUND_COLOR_PREF); return NS_OK; } @@ -682,9 +686,22 @@ ImageDocument::CreateSyntheticDocument() mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::src, srcString, false); mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::alt, srcString, false); + // Implement mechanism for custom background color from pref. + if (!mBackgroundColor.IsEmpty()) { + nsCSSValue color; + nsCSSParser parser; + if (parser.ParseColorString(mBackgroundColor, nullptr, 0, color)) { + nsAutoString styleAttr(NS_LITERAL_STRING("background-color: ")); + styleAttr.Append(mBackgroundColor); + body->SetAttr(kNameSpaceID_None, nsGkAtoms::style, styleAttr, false); + } + } + body->AppendChildTo(mImageContent, false); imageLoader->SetLoadingEnabled(true); + UpdateTitleAndCharset(); + return NS_OK; } diff --git a/dom/html/ImageDocument.h b/dom/html/ImageDocument.h index fdf2a00a85..9453173140 100644 --- a/dom/html/ImageDocument.h +++ b/dom/html/ImageDocument.h @@ -112,6 +112,9 @@ protected: float mVisibleHeight; int32_t mImageWidth; int32_t mImageHeight; + + // Holds the custom background color for stand-alone images + nsAutoString mBackgroundColor; bool mResizeImageByDefault; bool mClickResizingEnabled; diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index ceecaa84e7..6eddfe7a27 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -273,6 +273,9 @@ pref("browser.display.show_image_placeholders", true); pref("browser.display.show_loading_image_placeholder", false); // min font device pixel size at which to turn on high quality pref("browser.display.auto_quality_min_font_size", 20); +// Background color for standalone images; leave empty to use default +// all CSS colors available: named colors, rgb(..), #rrggbb, ... +pref("browser.display.standalone_images.background_color", ""); pref("browser.anchor_color", "#0000EE"); pref("browser.active_color", "#EE0000"); pref("browser.visited_color", "#551A8B"); |