diff options
author | Michael Bruning <michael.bruning@qt.io> | 2016-08-09 16:28:44 +0200 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2016-08-28 06:50:44 +0000 |
commit | 54b7425c356378018c511bd9087f06767d0bc708 (patch) | |
tree | 5c95c24e5c70d1a7ae9bf4d9cc6d55ae5788e5e9 | |
parent | 2609e257926c36e211a5aec9d6675e27dd447aad (diff) |
Add setting to enable printing of CSS backgrounds
[ChangeLog][Printing] Printing will now include the
CSS background of the printed elements by default. This restores
the default behavior from Qt WebKit. It can be controlled via the
PrintElementBackgrounds web setting.
Task-number: QTBUG-54918
Change-Id: I37c37456dfec6368f22c36c515ac3cad1bbf8006
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r-- | src/core/print_view_manager_qt.cpp | 6 | ||||
-rw-r--r-- | src/core/web_engine_settings.cpp | 2 | ||||
-rw-r--r-- | src/core/web_engine_settings.h | 3 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginesettings.cpp | 21 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginesettings_p.h | 4 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginesettings.cpp | 3 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginesettings.h | 3 | ||||
-rw-r--r-- | src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc | 3 |
8 files changed, 42 insertions, 3 deletions
diff --git a/src/core/print_view_manager_qt.cpp b/src/core/print_view_manager_qt.cpp index bb01f531c..26a6c2682 100644 --- a/src/core/print_view_manager_qt.cpp +++ b/src/core/print_view_manager_qt.cpp @@ -50,7 +50,9 @@ #include "chrome/browser/printing/print_job_manager.h" #include "chrome/browser/printing/printer_query.h" #include "components/printing/common/print_messages.h" +#include "content/browser/renderer_host/render_view_host_impl.h" #include "content/public/browser/browser_thread.h" +#include "content/public/common/web_preferences.h" #include "printing/pdf_metafile_skia.h" #include "printing/print_job_constants.h" @@ -125,7 +127,7 @@ static base::DictionaryValue *createPrintSettings() printSettings->SetBoolean(printing::kSettingPreviewModifiable, false); printSettings->SetBoolean(printing::kSettingShouldPrintSelectionOnly, false); - printSettings->SetBoolean(printing::kSettingShouldPrintBackgrounds, false); + printSettings->SetBoolean(printing::kSettingShouldPrintBackgrounds, true); printSettings->SetBoolean(printing::kSettingHeaderFooterEnabled, false); printSettings->SetString(printing::kSettingDeviceName, ""); printSettings->SetInteger(printing::kPreviewUIID, 12345678); @@ -210,6 +212,8 @@ bool PrintViewManagerQt::PrintToPDFInternal(const QPageLayout &pageLayout, bool m_printSettings->SetInteger(printing::kSettingColor, printInColor ? printing::COLOR : printing::GRAYSCALE); applyQPageLayoutSettingsToDictionary(pageLayout, *m_printSettings); + m_printSettings->SetBoolean(printing::kSettingShouldPrintBackgrounds + , web_contents()->GetRenderViewHost()->GetWebkitPreferences().should_print_backgrounds); return Send(new PrintMsg_InitiatePrintPreview(routing_id(), false)); } diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp index a706b860e..754fa2f51 100644 --- a/src/core/web_engine_settings.cpp +++ b/src/core/web_engine_settings.cpp @@ -238,6 +238,7 @@ void WebEngineSettings::initDefaults(bool offTheRecord) s_defaultAttributes.insert(AutoLoadIconsForPage, true); s_defaultAttributes.insert(TouchIconsEnabled, false); s_defaultAttributes.insert(FocusOnNavigationEnabled, true); + s_defaultAttributes.insert(PrintElementBackgrounds, true); } if (offTheRecord) m_attributes.insert(LocalStorageEnabled, false); @@ -313,6 +314,7 @@ void WebEngineSettings::applySettingsToWebPreferences(content::WebPreferences *p prefs->fullscreen_supported = testAttribute(FullScreenSupportEnabled); prefs->accelerated_2d_canvas_enabled = testAttribute(Accelerated2dCanvasEnabled); prefs->experimental_webgl_enabled = testAttribute(WebGLEnabled); + prefs->should_print_backgrounds = testAttribute(PrintElementBackgrounds); // Fonts settings. prefs->standard_font_family_map[content::kCommonScript] = toString16(fontFamily(StandardFont)); diff --git a/src/core/web_engine_settings.h b/src/core/web_engine_settings.h index 55e659b53..31f2198b8 100644 --- a/src/core/web_engine_settings.h +++ b/src/core/web_engine_settings.h @@ -80,7 +80,8 @@ public: Accelerated2dCanvasEnabled, AutoLoadIconsForPage, TouchIconsEnabled, - FocusOnNavigationEnabled + FocusOnNavigationEnabled, + PrintElementBackgrounds }; // Must match the values from the public API in qwebenginesettings.h. diff --git a/src/webengine/api/qquickwebenginesettings.cpp b/src/webengine/api/qquickwebenginesettings.cpp index a69db0554..2393f877a 100644 --- a/src/webengine/api/qquickwebenginesettings.cpp +++ b/src/webengine/api/qquickwebenginesettings.cpp @@ -318,6 +318,19 @@ bool QQuickWebEngineSettings::focusOnNavigationEnabled() const } /*! + \qmlproperty bool WebEngineSettings::printElementBackgrounds + \since QtWebEngine 1.4 + + Turns on printing of CSS backgrounds when printing to PDF. + + Enabled by default. +*/ +bool QQuickWebEngineSettings::printElementBackgrounds() const +{ + return d_ptr->testAttribute(WebEngineSettings::PrintElementBackgrounds); +} + +/*! \qmlproperty QString WebEngineSettings::defaultTextEncoding \since QtWebEngine 1.2 @@ -478,6 +491,14 @@ void QQuickWebEngineSettings::setTouchIconsEnabled(bool on) Q_EMIT touchIconsEnabledChanged(); } +void QQuickWebEngineSettings::setPrintElementBackgrounds(bool on) +{ + bool wasOn = d_ptr->testAttribute(WebEngineSettings::PrintElementBackgrounds); + d_ptr->setAttribute(WebEngineSettings::PrintElementBackgrounds, on); + if (wasOn != on) + Q_EMIT printElementBackgroundsChanged(); +} + void QQuickWebEngineSettings::setDefaultTextEncoding(QString encoding) { const QString oldDefaultTextEncoding = d_ptr->defaultTextEncoding(); diff --git a/src/webengine/api/qquickwebenginesettings_p.h b/src/webengine/api/qquickwebenginesettings_p.h index 2675630f8..917b9e443 100644 --- a/src/webengine/api/qquickwebenginesettings_p.h +++ b/src/webengine/api/qquickwebenginesettings_p.h @@ -83,6 +83,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineSettings : public QObject { Q_PROPERTY(bool autoLoadIconsForPage READ autoLoadIconsForPage WRITE setAutoLoadIconsForPage NOTIFY autoLoadIconsForPageChanged REVISION 2) Q_PROPERTY(bool touchIconsEnabled READ touchIconsEnabled WRITE setTouchIconsEnabled NOTIFY touchIconsEnabledChanged REVISION 2) Q_PROPERTY(bool focusOnNavigationEnabled READ focusOnNavigationEnabled WRITE setFocusOnNavigationEnabled NOTIFY focusOnNavigationEnabledChanged REVISION 3) + Q_PROPERTY(bool printElementBackgrounds READ printElementBackgrounds WRITE setPrintElementBackgrounds NOTIFY printElementBackgroundsChanged REVISION 3) public: ~QQuickWebEngineSettings(); @@ -107,6 +108,7 @@ public: bool autoLoadIconsForPage() const; bool touchIconsEnabled() const; bool focusOnNavigationEnabled() const; + bool printElementBackgrounds() const; void setAutoLoadImages(bool on); void setJavascriptEnabled(bool on); @@ -128,6 +130,7 @@ public: void setAutoLoadIconsForPage(bool on); void setTouchIconsEnabled(bool on); void setFocusOnNavigationEnabled(bool on); + void setPrintElementBackgrounds(bool on); signals: void autoLoadImagesChanged(); @@ -150,6 +153,7 @@ signals: Q_REVISION(2) void autoLoadIconsForPageChanged(); Q_REVISION(2) void touchIconsEnabledChanged(); Q_REVISION(3) void focusOnNavigationEnabledChanged(); + Q_REVISION(3) void printElementBackgroundsChanged(); private: explicit QQuickWebEngineSettings(QQuickWebEngineSettings *parentSettings = 0); diff --git a/src/webenginewidgets/api/qwebenginesettings.cpp b/src/webenginewidgets/api/qwebenginesettings.cpp index dbc6a0e9b..f14aa9352 100644 --- a/src/webenginewidgets/api/qwebenginesettings.cpp +++ b/src/webenginewidgets/api/qwebenginesettings.cpp @@ -91,6 +91,9 @@ static WebEngineSettings::Attribute toWebEngineAttribute(QWebEngineSettings::Web return WebEngineSettings::TouchIconsEnabled; case QWebEngineSettings::FocusOnNavigationEnabled: return WebEngineSettings::FocusOnNavigationEnabled; + case QWebEngineSettings::PrintElementBackgrounds: + return WebEngineSettings::PrintElementBackgrounds; + default: return WebEngineSettings::UnsupportedInCoreSettings; } diff --git a/src/webenginewidgets/api/qwebenginesettings.h b/src/webenginewidgets/api/qwebenginesettings.h index fb7fcfee5..23a1d5c99 100644 --- a/src/webenginewidgets/api/qwebenginesettings.h +++ b/src/webenginewidgets/api/qwebenginesettings.h @@ -86,7 +86,8 @@ public: Accelerated2dCanvasEnabled, AutoLoadIconsForPage, TouchIconsEnabled, - FocusOnNavigationEnabled + FocusOnNavigationEnabled, + PrintElementBackgrounds }; enum FontSize { diff --git a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc index 5bea28f55..80927ec8f 100644 --- a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc +++ b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc @@ -151,6 +151,9 @@ (load, stop, reload, reload and bypass cache, forward, backward, set content, and so on). Enabled by default. (Added in Qt 5.8) + \value PrintElementBackgrounds + Turns on printing of CSS backgrounds when printing to PDF. + Enabled by default. (Added in Qt 5.8) */ /*! |