diff options
author | Ahmad Samir <a.samirh78@gmail.com> | 2018-11-05 17:07:03 +0200 |
---|---|---|
committer | Ahmad Samir <a.samirh78@gmail.com> | 2019-02-26 19:44:09 +0000 |
commit | ac7f46dd9114051756f56571b9cb3bda002314a1 (patch) | |
tree | 8161fc94965c5658323420d07ca51bf2ca6b1590 /src/printsupport/dialogs/qprintpreviewdialog.cpp | |
parent | c93670c5a03cecbca9bb43aff65ceea3a401c7b1 (diff) |
Unix: QPageSetupDialog: Use print device default paper size
When invoking QPageSetupDialog from QPrintPreviewDialog, don't construct
a new QPageSetupDialog every time the pageSetup action is triggered, instead
reuse the dialog if it's already been created. This way setPrinter is called
only once. This matches how QPrintDialog invokes QPageSetupDialog.
Set the default print device paper size in initPageSizes() instead of
setPrinter().
Change-Id: Ic82e6dd47ee00ecdd942c5ba59dbf09fb18ef218
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Diffstat (limited to 'src/printsupport/dialogs/qprintpreviewdialog.cpp')
-rw-r--r-- | src/printsupport/dialogs/qprintpreviewdialog.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/printsupport/dialogs/qprintpreviewdialog.cpp b/src/printsupport/dialogs/qprintpreviewdialog.cpp index e6b665f82c..258741c35c 100644 --- a/src/printsupport/dialogs/qprintpreviewdialog.cpp +++ b/src/printsupport/dialogs/qprintpreviewdialog.cpp @@ -152,8 +152,8 @@ class QPrintPreviewDialogPrivate : public QDialogPrivate Q_DECLARE_PUBLIC(QPrintPreviewDialog) public: QPrintPreviewDialogPrivate() - : printDialog(nullptr), ownPrinter(false), - initialized(false) {} + : printDialog(nullptr), pageSetupDialog(nullptr), + ownPrinter(false), initialized(false) {} // private slots void _q_fit(QAction *action); @@ -178,6 +178,7 @@ public: void updateZoomFactor(); QPrintDialog *printDialog; + QPageSetupDialog *pageSetupDialog; QPrintPreviewWidget *preview; QPrinter *printer; bool ownPrinter; @@ -602,8 +603,10 @@ void QPrintPreviewDialogPrivate::_q_pageSetup() { Q_Q(QPrintPreviewDialog); - QPageSetupDialog pageSetup(printer, q); - if (pageSetup.exec() == QDialog::Accepted) { + if (!pageSetupDialog) + pageSetupDialog = new QPageSetupDialog(printer, q); + + if (pageSetupDialog->exec() == QDialog::Accepted) { // update possible orientation changes if (preview->orientation() == QPrinter::Portrait) { portraitAction->setChecked(true); @@ -713,6 +716,7 @@ QPrintPreviewDialog::~QPrintPreviewDialog() if (d->ownPrinter) delete d->printer; delete d->printDialog; + delete d->pageSetupDialog; } /*! |