diff options
author | Michal Klocek <michal.klocek@qt.io> | 2016-12-19 18:57:12 +0100 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2017-01-16 14:10:28 +0000 |
commit | 7cbd4ebf240ea720b70851fd40945291d69add16 (patch) | |
tree | fa52fefab087217e118272829cf68c1c7cd2b97b /src | |
parent | c188dda0e9c9755ff57eba307d12bd0bb027c608 (diff) |
Add print and pdf feature to new configure system
Currently printing and pdf are bounded together. Make compilation
optional by adding it as a feature.
Fix formatting of embedded_linux.pri
Task-number: QTBUG-57731
Task-number: QTBUG-58108
Change-Id: I53a2baea656df0a5b6139365ed06385c9ebc5830
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/config/common.pri | 12 | ||||
-rw-r--r-- | src/core/config/desktop_linux.pri | 5 | ||||
-rw-r--r-- | src/core/config/embedded_linux.pri | 5 | ||||
-rw-r--r-- | src/core/config/embedded_qnx.pri | 3 | ||||
-rw-r--r-- | src/core/config/mac_osx.pri | 5 | ||||
-rw-r--r-- | src/core/config/windows.pri | 5 | ||||
-rw-r--r-- | src/core/core_generator.pro | 22 | ||||
-rw-r--r-- | src/core/qtwebengine.gypi | 10 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 2 | ||||
-rw-r--r-- | src/webengine/webengine.pro | 2 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 30 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.h | 7 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage_p.h | 4 | ||||
-rw-r--r-- | src/webenginewidgets/webenginewidgets.pro | 10 |
14 files changed, 69 insertions, 53 deletions
diff --git a/src/core/config/common.pri b/src/core/config/common.pri index b5bb23684..b125cff93 100644 --- a/src/core/config/common.pri +++ b/src/core/config/common.pri @@ -13,3 +13,15 @@ sanitize_address: GYP_CONFIG += asan=1 sanitize_thread: GYP_CONFIG += tsan=1 sanitize_memory: GYP_CONFIG += msan=1 sanitize_undefined: GYP_CONFIG += ubsan=1 + +use?(printing) { + GYP_CONFIG += enable_basic_printing=1 enable_print_preview=1 +} else { + GYP_CONFIG += enable_basic_printing=0 enable_print_preview=0 +} + +use?(pdf) { + GYP_CONFIG += enable_pdf=1 +} else { + GYP_CONFIG += enable_pdf=0 +} diff --git a/src/core/config/desktop_linux.pri b/src/core/config/desktop_linux.pri index 23044619b..2a39f7aee 100644 --- a/src/core/config/desktop_linux.pri +++ b/src/core/config/desktop_linux.pri @@ -4,10 +4,7 @@ include(linux.pri) GYP_CONFIG += \ desktop_linux=1 \ - enable_widevine=1 \ - enable_basic_printing=1 \ - enable_print_preview=1 \ - enable_pdf=1 + enable_widevine=1 clang { GYP_CONFIG += werror= diff --git a/src/core/config/embedded_linux.pri b/src/core/config/embedded_linux.pri index 7a909f1e2..e390a158f 100644 --- a/src/core/config/embedded_linux.pri +++ b/src/core/config/embedded_linux.pri @@ -9,16 +9,13 @@ GYP_CONFIG += \ embedded=1 \ enable_autofill_dialog=0 \ enable_automation=0 \ - enable_basic_printing=0 \ enable_captive_portal_detection=0 \ enable_extensions=0 \ enable_google_now=0 \ enable_language_detection=0 \ enable_managed_users=0 \ - enable_pdf=0 \ enable_plugin_installation=0 \ enable_plugins=0 \ - enable_print_preview=0 \ enable_session_service=0 \ enable_task_manager=0 \ enable_themes=0 \ @@ -39,6 +36,6 @@ GYP_CONFIG += \ use_x11=0 \ v8_use_snapshot=false \ want_separate_host_toolset=1 \ - angle_enable_gl=0 \ + angle_enable_gl=0 WEBENGINE_CONFIG *= reduce_binary_size diff --git a/src/core/config/embedded_qnx.pri b/src/core/config/embedded_qnx.pri index 3effdb816..f24888776 100644 --- a/src/core/config/embedded_qnx.pri +++ b/src/core/config/embedded_qnx.pri @@ -4,9 +4,6 @@ include(common.pri) GYP_CONFIG += \ disable_nacl=1 \ - enable_basic_printing=0 \ - enable_pdf=0 \ - enable_plugins=0 \ enable_webrtc=0 \ use_ash=0 \ use_aura=1 \ diff --git a/src/core/config/mac_osx.pri b/src/core/config/mac_osx.pri index 4111236ed..17f200449 100644 --- a/src/core/config/mac_osx.pri +++ b/src/core/config/mac_osx.pri @@ -25,10 +25,7 @@ GYP_CONFIG += \ mac_deployment_target=\"$${QMAKE_MACOSX_DEPLOYMENT_TARGET}\" \ make_clang_dir=\"$${QMAKE_CLANG_DIR}\" \ clang_use_chrome_plugins=0 \ - enable_widevine=1 \ - enable_basic_printing=1 \ - enable_print_preview=1 \ - enable_pdf=1 + enable_widevine=1 # Force touch API is used in 49-based Chromium, which is included starting with 10.10.3 SDK, so we # disable the API usage if the SDK version is lower. diff --git a/src/core/config/windows.pri b/src/core/config/windows.pri index a1c116ff8..51b83ac04 100644 --- a/src/core/config/windows.pri +++ b/src/core/config/windows.pri @@ -6,10 +6,7 @@ GYP_CONFIG += \ disable_nacl=1 \ remoting=0 \ use_ash=0 \ - enable_widevine=1 \ - enable_basic_printing=1 \ - enable_print_preview=1 \ - enable_pdf=1 + enable_widevine=1 # Libvpx build needs additional search path on Windows. GYP_ARGS += "-D qtwe_chromium_obj_dir=\"$$OUT_PWD/$$getConfigDir()/obj/$${getChromiumSrcDir()}\"" diff --git a/src/core/core_generator.pro b/src/core/core_generator.pro index 6071333aa..15e27997a 100644 --- a/src/core/core_generator.pro +++ b/src/core/core_generator.pro @@ -75,7 +75,6 @@ SOURCES = \ native_web_keyboard_event_qt.cpp \ network_delegate_qt.cpp \ ozone_platform_eglfs.cpp \ - pdfium_document_wrapper_qt.cpp \ permission_manager_qt.cpp \ process_main.cpp \ proxy_config_service_qt.cpp \ @@ -156,7 +155,6 @@ HEADERS = \ media_capture_devices_dispatcher.h \ network_delegate_qt.h \ ozone_platform_eglfs.h \ - pdfium_document_wrapper_qt.h \ permission_manager_qt.h \ process_main.h \ proxy_config_service_qt.h \ @@ -198,6 +196,26 @@ HEADERS = \ web_engine_visited_links_manager.h \ web_event_factory.h + +use?(pdf) { + SOURCES += pdfium_document_wrapper_qt.cpp + HEADERS += pdfium_document_wrapper_qt.h +} + +use?(printing) { + SOURCES += \ + printing_message_filter_qt.cpp \ + print_view_manager_base_qt.cpp \ + print_view_manager_qt.cpp \ + renderer/print_web_view_helper_delegate_qt.cpp + + HEADERS += \ + printing_message_filter_qt.h \ + print_view_manager_base_qt.h \ + print_view_manager_qt.h \ + renderer/print_web_view_helper_delegate_qt.h +} + contains(QT_CONFIG, opengl) { SOURCES += \ yuv_video_node.cpp \ diff --git a/src/core/qtwebengine.gypi b/src/core/qtwebengine.gypi index d0ab01534..5131ce8cc 100644 --- a/src/core/qtwebengine.gypi +++ b/src/core/qtwebengine.gypi @@ -126,16 +126,6 @@ '<(chromium_src_dir)/components/components.gyp:printing_browser', '<(chromium_src_dir)/components/components.gyp:printing_common', '<(chromium_src_dir)/components/components.gyp:printing_renderer', - ], - 'sources': [ - 'printing_message_filter_qt.cpp', - 'print_view_manager_base_qt.cpp', - 'print_view_manager_qt.cpp', - 'printing_message_filter_qt.h', - 'print_view_manager_base_qt.h', - 'print_view_manager_qt.h', - 'renderer/print_web_view_helper_delegate_qt.cpp', - 'renderer/print_web_view_helper_delegate_qt.h', ] }], ['icu_use_data_file_flag==1', { diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 76d1ca8b5..a19f0be53 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -1326,7 +1326,7 @@ void QQuickWebEngineView::printToPdf(const QString& filePath, PrintedPageSizeId void QQuickWebEngineView::printToPdf(const QJSValue &callback, PrintedPageSizeId pageSizeId, PrintedPageOrientation orientation) { -#if defined (ENABLE_PDF) +#if defined(ENABLE_PDF) Q_D(QQuickWebEngineView); QPageSize layoutSize(static_cast<QPageSize::PageSizeId>(pageSizeId)); QPageLayout::Orientation layoutOrientation = static_cast<QPageLayout::Orientation>(orientation); diff --git a/src/webengine/webengine.pro b/src/webengine/webengine.pro index 2bbf82810..5fa49c77e 100644 --- a/src/webengine/webengine.pro +++ b/src/webengine/webengine.pro @@ -65,7 +65,7 @@ contains(WEBENGINE_CONFIG, use_spellchecker) { DEFINES += ENABLE_SPELLCHECK } -contains(WEBENGINE_CONFIG, enable_pdf) { +use?(pdf) { DEFINES += ENABLE_PDF } diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index ae7b209e4..2af3db414 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -80,9 +80,11 @@ #include <QMenu> #include <QMessageBox> #include <QMimeData> +#if defined(QT_PRINTSUPPORT_LIB) #ifndef QT_NO_PRINTER #include <QPrinter> -#endif +#endif //QT_NO_PRINTER +#endif //QT_PRINTSUPPORT_LIB #include <QStandardPaths> #include <QStyle> #include <QTimer> @@ -96,8 +98,7 @@ using namespace QtWebEngineCore; static const int MaxTooltipLength = 1024; -#ifndef QT_NO_PRINTER -#if defined(ENABLE_PDF) +#if defined(ENABLE_PRINTING) && defined(ENABLE_PDF) static bool printPdfDataOnPrinter(const QByteArray& data, QPrinter& printer) { QRect printerPageRect = printer.pageRect(); @@ -174,8 +175,7 @@ static bool printPdfDataOnPrinter(const QByteArray& data, QPrinter& printer) return true; } -#endif // defined(ENABLE_PDF) -#endif // QT_NO_PRINTER +#endif // defined(ENABLE_PRINTING) && defined(ENABLE_PDF) static QWebEnginePage::WebWindowType toWindowType(WebContentsAdapterClient::WindowOpenDisposition disposition) { @@ -227,7 +227,7 @@ QWebEnginePagePrivate::QWebEnginePagePrivate(QWebEngineProfile *_profile) , fullscreenMode(false) , webChannel(nullptr) , webChannelWorldId(QWebEngineScript::MainWorld) -#ifndef QT_NO_PRINTER +#if defined(ENABLE_PRINTING) , currentPrinter(nullptr) #endif { @@ -484,7 +484,7 @@ void QWebEnginePagePrivate::didFindText(quint64 requestId, int matchCount) void QWebEnginePagePrivate::didPrintPage(quint64 requestId, const QByteArray &result) { #if defined(ENABLE_PDF) -#ifndef QT_NO_PRINTER +#if defined(ENABLE_PRINTING) // If no currentPrinter is set that means that were printing to PDF only. if (!currentPrinter) { m_callbacks.invoke(requestId, result); @@ -497,7 +497,7 @@ void QWebEnginePagePrivate::didPrintPage(quint64 requestId, const QByteArray &re currentPrinter = nullptr; #else // If print support is disabled, only PDF printing is available. m_callbacks.invoke(requestId, result); -#endif // ifndef QT_NO_PRINTER +#endif // defined(ENABLE_PRINTING) #else // defined(ENABLE_PDF) // we should never enter this branch, but just for safe-keeping... Q_UNUSED(result); @@ -1985,7 +1985,7 @@ void QWebEnginePage::printToPdf(const QString &filePath, const QPageLayout &page { #if defined(ENABLE_PDF) Q_D(const QWebEnginePage); -#ifndef QT_NO_PRINTER +#if defined(ENABLE_PRINTING) if (d->currentPrinter) { #if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) qWarning("Cannot print to PDF while at the same time printing on printer %ls", qUtf16Printable(d->currentPrinter->printerName())); @@ -1994,7 +1994,7 @@ void QWebEnginePage::printToPdf(const QString &filePath, const QPageLayout &page #endif return; } -#endif +#endif // ENABLE_PRINTING d->adapter->printToPDF(pageLayout, filePath); #else Q_UNUSED(filePath); @@ -2018,7 +2018,7 @@ void QWebEnginePage::printToPdf(const QWebEngineCallback<const QByteArray&> &res { Q_D(QWebEnginePage); #if defined(ENABLE_PDF) -#ifndef QT_NO_PRINTER +#if defined(ENABLE_PRINTING) if (d->currentPrinter) { #if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) qWarning("Cannot print to PDF while at the same time printing on printer %ls", qUtf16Printable(d->currentPrinter->printerName())); @@ -2028,7 +2028,7 @@ void QWebEnginePage::printToPdf(const QWebEngineCallback<const QByteArray&> &res d->m_callbacks.invokeEmpty(resultCallback); return; } -#endif // ifndef QT_NO_PRINTER +#endif // ENABLE_PRINTING quint64 requestId = d->adapter->printToPDFCallbackResult(pageLayout); d->m_callbacks.registerCallback(requestId, resultCallback); #else // if defined(ENABLE_PDF) @@ -2037,6 +2037,7 @@ void QWebEnginePage::printToPdf(const QWebEngineCallback<const QByteArray&> &res #endif // if defined(ENABLE_PDF) } +#if defined(QT_PRINTSUPPORT_LIB) #ifndef QT_NO_PRINTER /*! \fn void QWebEnginePage::print(QPrinter *printer, FunctorOrLambda resultCallback) @@ -2055,6 +2056,7 @@ void QWebEnginePage::print(QPrinter *printer, const QWebEngineCallback<bool> &re { Q_D(QWebEnginePage); #if defined(ENABLE_PDF) +#if defined(ENABLE_PRINTING) if (d->currentPrinter) { #if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) qWarning("Cannot print page on printer %ls: Already printing on %ls.", qUtf16Printable(printer->printerName()), qUtf16Printable(d->currentPrinter->printerName())); @@ -2065,6 +2067,7 @@ void QWebEnginePage::print(QPrinter *printer, const QWebEngineCallback<bool> &re return; } d->currentPrinter = printer; +#endif // ENABLE_PRINTING quint64 requestId = d->adapter->printToPDFCallbackResult(printer->pageLayout(), printer->colorMode() == QPrinter::Color); d->m_callbacks.registerCallback(requestId, resultCallback); #else // if defined(ENABLE_PDF) @@ -2072,7 +2075,8 @@ void QWebEnginePage::print(QPrinter *printer, const QWebEngineCallback<bool> &re d->m_callbacks.invokeDirectly(resultCallback, false); #endif // if defined(ENABLE_PDF) } -#endif // QT_NO_PRINTER +#endif // if defined(QT_NO_PRINTER) +#endif // if defined(QT_PRINTSUPPORT_LIB) /*! \since 5.7 diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h index 75621304b..bc5799aac 100644 --- a/src/webenginewidgets/api/qwebenginepage.h +++ b/src/webenginewidgets/api/qwebenginepage.h @@ -55,9 +55,12 @@ QT_BEGIN_NAMESPACE class QMenu; +#if defined(QT_PRINTSUPPORT_LIB) #ifndef QT_NO_PRINTER class QPrinter; -#endif +#endif // QT_NO_PRINTER +#endif // QT_PRINTSUPPORT_LIB + class QWebChannel; class QWebEngineContextMenuData; class QWebEngineFullScreenRequest; @@ -283,6 +286,7 @@ public: void printToPdf(const QWebEngineCallback<const QByteArray&> &resultCallback, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF())); #endif +#if defined(QT_PRINTSUPPORT_LIB) #ifndef QT_NO_PRINTER #ifdef Q_QDOC void print(QPrinter *printer, FunctorOrLambda resultCallback); @@ -290,6 +294,7 @@ public: void print(QPrinter *printer, const QWebEngineCallback<bool> &resultCallback); #endif // QDOC #endif // QT_NO_PRINTER +#endif // QT_PRINTSUPPORT_LIB const QWebEngineContextMenuData &contextMenuData() const; diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index 99caeac86..c7b805c45 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -179,9 +179,9 @@ public: mutable QtWebEngineCore::CallbackDirectory m_callbacks; mutable QAction *actions[QWebEnginePage::WebActionCount]; -#ifndef QT_NO_PRINTER +#if defined(ENABLE_PRINTING) QPrinter *currentPrinter; -#endif // QT_NO_PRINTER +#endif }; QT_END_NAMESPACE diff --git a/src/webenginewidgets/webenginewidgets.pro b/src/webenginewidgets/webenginewidgets.pro index b60de6e1e..ad79c1ef9 100644 --- a/src/webenginewidgets/webenginewidgets.pro +++ b/src/webenginewidgets/webenginewidgets.pro @@ -52,11 +52,13 @@ contains(WEBENGINE_CONFIG, use_spellchecker) { DEFINES += ENABLE_SPELLCHECK } -contains(WEBENGINE_CONFIG, enable_pdf) { - DEFINES += ENABLE_PDF +use?(printing) { + DEFINES += ENABLE_PRINTING + QT += printsupport } -qtHaveModule(printsupport) { - QT += printsupport +use?(pdf) { + DEFINES += ENABLE_PDF } + load(qt_module) |