From bee9de04523e299d1700e166808dbd6e39a806ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Sun, 26 May 2024 20:49:11 +0200 Subject: [PATCH] iOS: Enable the Qt Print Support module The print support module was disabled for the initial port of Qt for iOS due to the lack of a native print backend and native print dialogs, as we have on macOS. However, even lacking these we should be able to offer the print to PDF feature, with widget based print dialogs. We can do so by opting in to the generic Unix print dialogs and backends, as these do not have a hard dependency on CUPS. Longer term we should adopt UIPrintInteractionController, UIPrinterPickerController, and UIPrinter, but that's a bigger task. [ChangeLog[iOS] The Qt Print Support module is now enabled, allowing printing to PDF. Printing to system provided printers are not yet supported. Fixes: QTBUG-125581 Change-Id: I5bc143e47c7277b3cea52760672ac4d0c8a7a898 Reviewed-by: Richard Moe Gustavsen --- src/printsupport/CMakeLists.txt | 2 +- src/printsupport/configure.cmake | 2 +- src/printsupport/dialogs/qpagesetupdialog.cpp | 2 +- src/printsupport/dialogs/qpagesetupdialog.h | 2 +- src/printsupport/dialogs/qprintdialog.h | 4 ++-- src/printsupport/dialogs/qprintpreviewdialog.cpp | 8 ++++---- src/printsupport/widgets/qprintpreviewwidget.cpp | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/printsupport/CMakeLists.txt b/src/printsupport/CMakeLists.txt index 43a0c6b54be..f6d84be7c29 100644 --- a/src/printsupport/CMakeLists.txt +++ b/src/printsupport/CMakeLists.txt @@ -179,7 +179,7 @@ qt_internal_extend_target(PrintSupport CONDITION QT_FEATURE_printdialog AND WIN3 dialogs/qprintdialog_win.cpp ) -qt_internal_extend_target(PrintSupport CONDITION QT_FEATURE_printdialog AND UNIX AND NOT APPLE +qt_internal_extend_target(PrintSupport CONDITION QT_FEATURE_printdialog AND UNIX AND NOT MACOS SOURCES dialogs/qpagesetupdialog_unix.cpp dialogs/qpagesetupdialog_unix_p.h dialogs/qprintdialog_unix.cpp diff --git a/src/printsupport/configure.cmake b/src/printsupport/configure.cmake index 2287789ac10..a8b4ed38036 100644 --- a/src/printsupport/configure.cmake +++ b/src/printsupport/configure.cmake @@ -40,7 +40,7 @@ qt_feature("printer" PUBLIC SECTION "Painting" LABEL "QPrinter" PURPOSE "Provides a printer backend of QPainter." - CONDITION NOT UIKIT AND QT_FEATURE_picture AND QT_FEATURE_temporaryfile AND QT_FEATURE_pdf + CONDITION QT_FEATURE_picture AND QT_FEATURE_temporaryfile AND QT_FEATURE_pdf ) qt_feature_definition("printer" "QT_NO_PRINTER" NEGATE VALUE "1") qt_feature("printpreviewwidget" PUBLIC diff --git a/src/printsupport/dialogs/qpagesetupdialog.cpp b/src/printsupport/dialogs/qpagesetupdialog.cpp index 0bc80c1f6fd..40893cddabf 100644 --- a/src/printsupport/dialogs/qpagesetupdialog.cpp +++ b/src/printsupport/dialogs/qpagesetupdialog.cpp @@ -100,7 +100,7 @@ void QPageSetupDialog::open(QObject *receiver, const char *member) QDialog::open(); } -#if defined(Q_OS_MAC) || defined(Q_OS_WIN) +#if defined(Q_OS_MACOS) || defined(Q_OS_WIN) /*! \fn void QPageSetupDialog::setVisible(bool visible) \reimp */ diff --git a/src/printsupport/dialogs/qpagesetupdialog.h b/src/printsupport/dialogs/qpagesetupdialog.h index 80d9c7a7fd4..89056c70dd2 100644 --- a/src/printsupport/dialogs/qpagesetupdialog.h +++ b/src/printsupport/dialogs/qpagesetupdialog.h @@ -25,7 +25,7 @@ public: explicit QPageSetupDialog(QWidget *parent = nullptr); ~QPageSetupDialog(); -#if defined(Q_OS_MAC) || defined(Q_OS_WIN) || defined(Q_QDOC) +#if defined(Q_OS_MACOS) || defined(Q_OS_WIN) || defined(Q_QDOC) void setVisible(bool visible) override; #endif int exec() override; diff --git a/src/printsupport/dialogs/qprintdialog.h b/src/printsupport/dialogs/qprintdialog.h index fa05f42bea0..4ba6ddfd484 100644 --- a/src/printsupport/dialogs/qprintdialog.h +++ b/src/printsupport/dialogs/qprintdialog.h @@ -28,7 +28,7 @@ public: ~QPrintDialog(); int exec() override; -#if defined (Q_OS_UNIX) && !defined(Q_OS_MAC) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) virtual void accept() override; #endif void done(int result) override; @@ -55,7 +55,7 @@ Q_SIGNALS: void accepted(QPrinter *printer); private: -#if defined (Q_OS_UNIX) && !defined(Q_OS_MAC) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) Q_PRIVATE_SLOT(d_func(), void _q_togglePageSetCombo(bool)) Q_PRIVATE_SLOT(d_func(), void _q_collapseOrExpandDialog()) #if QT_CONFIG(messagebox) diff --git a/src/printsupport/dialogs/qprintpreviewdialog.cpp b/src/printsupport/dialogs/qprintpreviewdialog.cpp index 2028287b552..3c19e25c647 100644 --- a/src/printsupport/dialogs/qprintpreviewdialog.cpp +++ b/src/printsupport/dialogs/qprintpreviewdialog.cpp @@ -250,7 +250,7 @@ void QPrintPreviewDialogPrivate::init(QPrinter *_printer) QWidget *pageEdit = new QWidget(toolbar); QVBoxLayout *vboxLayout = new QVBoxLayout; vboxLayout->setContentsMargins(0, 0, 0, 0); -#ifdef Q_OS_MAC +#ifdef Q_OS_MACOS // We query the widgets about their size and then we fix the size. // This should do the trick for the laying out part... QSize pageNumEditSize, pageNumLabelSize; @@ -260,7 +260,7 @@ void QPrintPreviewDialogPrivate::init(QPrinter *_printer) pageNumLabel->resize(pageNumLabelSize); #endif QFormLayout *formLayout = new QFormLayout; -#ifdef Q_OS_MAC +#ifdef Q_OS_MACOS // We have to change the growth policy in Mac. formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); #endif @@ -310,7 +310,7 @@ void QPrintPreviewDialogPrivate::init(QPrinter *_printer) q->setWindowTitle(caption); if (!printer->isValid() -#if defined(Q_OS_WIN) || defined(Q_OS_MAC) +#if defined(Q_OS_WIN) || defined(Q_OS_APPLE) || printer->outputFormat() != QPrinter::NativeFormat #endif ) @@ -539,7 +539,7 @@ void QPrintPreviewDialogPrivate::_q_print() { Q_Q(QPrintPreviewDialog); -#if defined(Q_OS_WIN) || defined(Q_OS_MAC) +#if defined(Q_OS_WIN) || defined(Q_OS_APPLE) if (printer->outputFormat() != QPrinter::NativeFormat) { QString title = QCoreApplication::translate("QPrintPreviewDialog", "Export to PDF"); QString suffix = ".pdf"_L1; diff --git a/src/printsupport/widgets/qprintpreviewwidget.cpp b/src/printsupport/widgets/qprintpreviewwidget.cpp index 637eb425052..eb111a6efcf 100644 --- a/src/printsupport/widgets/qprintpreviewwidget.cpp +++ b/src/printsupport/widgets/qprintpreviewwidget.cpp @@ -111,7 +111,7 @@ public: GraphicsView(QWidget* parent = nullptr) : QGraphicsView(parent) { -#ifdef Q_OS_MAC +#ifdef Q_OS_APPLE setFrameStyle(QFrame::NoFrame); #endif }