From 4497cb3d85ae5be0765c1a1dc0916e7f6deb7e70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 22 May 2020 15:05:10 +0200 Subject: macOS: Build print support plugin directly into QtPrintSupport Task-number: QTBUG-83259 Change-Id: I74f60519fbccfa5f208397bf3d65f0a4f64cb6f0 Reviewed-by: Volker Hilsheimer --- src/printsupport/CMakeLists.txt | 2 ++ src/printsupport/platform/macos/cocoa.json | 3 +++ src/printsupport/platform/macos/macos.pri | 6 +++++- .../platform/macos/qcocoaprintersupport.mm | 24 ++++++++++++++++++++++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/printsupport/platform/macos/cocoa.json (limited to 'src/printsupport') diff --git a/src/printsupport/CMakeLists.txt b/src/printsupport/CMakeLists.txt index e032845cae..698875e1f3 100644 --- a/src/printsupport/CMakeLists.txt +++ b/src/printsupport/CMakeLists.txt @@ -149,6 +149,8 @@ qt_extend_target(PrintSupport CONDITION MACOS AND TARGET Qt::Widgets platform/macos/qcocoaprintdevice_p.h platform/macos/qcocoaprintdevice.mm platform/macos/qcocoaprintersupport_p.h platform/macos/qcocoaprintersupport.mm platform/macos/qprintengine_mac.mm platform/macos/qprintengine_mac_p.h + NO_PCH_SOURCES + "platform/macos/qcocoaprintersupport.mm" PUBLIC_LIBRARIES Qt::WidgetsPrivate Cups::Cups diff --git a/src/printsupport/platform/macos/cocoa.json b/src/printsupport/platform/macos/cocoa.json new file mode 100644 index 0000000000..85c38c42be --- /dev/null +++ b/src/printsupport/platform/macos/cocoa.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "cocoaprintersupport" ] +} diff --git a/src/printsupport/platform/macos/macos.pri b/src/printsupport/platform/macos/macos.pri index fc5c5c9b93..06a7c6a683 100644 --- a/src/printsupport/platform/macos/macos.pri +++ b/src/printsupport/platform/macos/macos.pri @@ -1,7 +1,6 @@ SOURCES += \ $$PWD/qprintengine_mac.mm \ $$PWD/qpaintengine_mac.mm \ - $$PWD/qcocoaprintersupport.mm \ $$PWD/qcocoaprintdevice.mm HEADERS += \ @@ -10,4 +9,9 @@ HEADERS += \ $$PWD/qprintengine_mac_p.h \ $$PWD/qpaintengine_mac_p.h +# Disable PCH to allow selectively enabling QT_STATICPLUGIN +NO_PCH_SOURCES += $$PWD/qcocoaprintersupport.mm + LIBS += -framework ApplicationServices -lcups + +OTHER_FILES += cocoa.json diff --git a/src/printsupport/platform/macos/qcocoaprintersupport.mm b/src/printsupport/platform/macos/qcocoaprintersupport.mm index 0a285dddc6..64a63241e7 100644 --- a/src/printsupport/platform/macos/qcocoaprintersupport.mm +++ b/src/printsupport/platform/macos/qcocoaprintersupport.mm @@ -52,6 +52,9 @@ #include +#define QT_STATICPLUGIN +#include + QT_BEGIN_NAMESPACE QCocoaPrinterSupport::QCocoaPrinterSupport() @@ -108,6 +111,27 @@ QString QCocoaPrinterSupport::defaultPrintDeviceId() const return QString(); } +class QCocoaPrinterSupportPlugin : public QPlatformPrinterSupportPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID QPlatformPrinterSupportFactoryInterface_iid FILE "cocoa.json") + +public: + QPlatformPrinterSupport *create(const QString &); +}; + +QPlatformPrinterSupport *QCocoaPrinterSupportPlugin::create(const QString &key) +{ + if (key.compare(key, QLatin1String("cocoaprintersupport"), Qt::CaseInsensitive) != 0) + return 0; + + return new QCocoaPrinterSupport(); +} + +Q_IMPORT_PLUGIN(QCocoaPrinterSupportPlugin) + +#include "qcocoaprintersupport.moc" + QT_END_NAMESPACE #endif //QT_NO_PRINTER -- cgit v1.2.3