Don't rely on QPrinter in widgets

Use the QPagedPaintDevice instead for the current
print() methods. Like this we can move the whole
printing system into it's own library.

Change-Id: I5e23fb3a9304eb3d12aa54959893601566249e23
Reviewed-on: http://codereview.qt.nokia.com/3208
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
This commit is contained in:
Lars Knoll 2011-08-17 15:44:59 +02:00
parent 699e8fe3a6
commit a1016213d0
7 changed files with 14 additions and 21 deletions

View File

@ -54,6 +54,7 @@ QT_MODULE(Gui)
class QGraphicsView; class QGraphicsView;
class QPrintPreviewDialogPrivate; class QPrintPreviewDialogPrivate;
class QPrinter;
class Q_WIDGETS_EXPORT QPrintPreviewDialog : public QDialog class Q_WIDGETS_EXPORT QPrintPreviewDialog : public QDialog
{ {

View File

@ -2512,7 +2512,6 @@ bool QPlainTextEdit::canPaste() const
return d->control->canPaste(); return d->control->canPaste();
} }
#ifndef QT_NO_PRINTER
/*! /*!
Convenience function to print the text edit's document to the given \a printer. This Convenience function to print the text edit's document to the given \a printer. This
is equivalent to calling the print method on the document directly except that this is equivalent to calling the print method on the document directly except that this
@ -2520,12 +2519,11 @@ bool QPlainTextEdit::canPaste() const
\sa QTextDocument::print() \sa QTextDocument::print()
*/ */
void QPlainTextEdit::print(QPrinter *printer) const void QPlainTextEdit::print(QPagedPaintDevice *printer) const
{ {
Q_D(const QPlainTextEdit); Q_D(const QPlainTextEdit);
d->control->print(printer); d->control->print(printer);
} }
#endif // QT _NO_PRINTER
/*! \property QPlainTextEdit::tabChangesFocus /*! \property QPlainTextEdit::tabChangesFocus
\brief whether \gui Tab changes focus or is accepted as input \brief whether \gui Tab changes focus or is accepted as input

View File

@ -64,7 +64,7 @@ class QTextDocument;
class QMenu; class QMenu;
class QPlainTextEditPrivate; class QPlainTextEditPrivate;
class QMimeData; class QMimeData;
class QPagedPaintDevice;
class Q_WIDGETS_EXPORT QPlainTextEdit : public QAbstractScrollArea class Q_WIDGETS_EXPORT QPlainTextEdit : public QAbstractScrollArea
{ {
@ -177,9 +177,7 @@ public:
bool canPaste() const; bool canPaste() const;
#ifndef QT_NO_PRINTER void print(QPagedPaintDevice *printer) const;
void print(QPrinter *printer) const;
#endif
int blockCount() const; int blockCount() const;

View File

@ -2285,7 +2285,6 @@ bool QTextEdit::canPaste() const
return d->control->canPaste(); return d->control->canPaste();
} }
#ifndef QT_NO_PRINTER
/*! /*!
\since 4.3 \since 4.3
Convenience function to print the text edit's document to the given \a printer. This Convenience function to print the text edit's document to the given \a printer. This
@ -2294,12 +2293,11 @@ bool QTextEdit::canPaste() const
\sa QTextDocument::print() \sa QTextDocument::print()
*/ */
void QTextEdit::print(QPrinter *printer) const void QTextEdit::print(QPagedPaintDevice *printer) const
{ {
Q_D(const QTextEdit); Q_D(const QTextEdit);
d->control->print(printer); d->control->print(printer);
} }
#endif // QT _NO_PRINTER
/*! \property QTextEdit::tabChangesFocus /*! \property QTextEdit::tabChangesFocus
\brief whether \gui Tab changes focus or is accepted as input \brief whether \gui Tab changes focus or is accepted as input

View File

@ -66,6 +66,7 @@ class QTextDocument;
class QMenu; class QMenu;
class QTextEditPrivate; class QTextEditPrivate;
class QMimeData; class QMimeData;
class QPagedPaintDevice;
class Q_WIDGETS_EXPORT QTextEdit : public QAbstractScrollArea class Q_WIDGETS_EXPORT QTextEdit : public QAbstractScrollArea
{ {
@ -232,9 +233,7 @@ public:
bool canPaste() const; bool canPaste() const;
#ifndef QT_NO_PRINTER void print(QPagedPaintDevice *printer) const;
void print(QPrinter *printer) const;
#endif
public Q_SLOTS: public Q_SLOTS:
void setFontPointSize(qreal s); void setFontPointSize(qreal s);

View File

@ -62,7 +62,7 @@
#include "qtextlist.h" #include "qtextlist.h"
#include "private/qwidgettextcontrol_p.h" #include "private/qwidgettextcontrol_p.h"
#include "qgraphicssceneevent.h" #include "qgraphicssceneevent.h"
#include "qprinter.h" #include "qpagedpaintdevice.h"
#include "qtextdocumentwriter.h" #include "qtextdocumentwriter.h"
#include "private/qtextcursor_p.h" #include "private/qtextcursor_p.h"
@ -2423,14 +2423,15 @@ bool QWidgetTextControl::isWordSelectionEnabled() const
return d->wordSelectionEnabled; return d->wordSelectionEnabled;
} }
#ifndef QT_NO_PRINTER void QWidgetTextControl::print(QPagedPaintDevice *printer) const
void QWidgetTextControl::print(QPrinter *printer) const
{ {
Q_D(const QWidgetTextControl); Q_D(const QWidgetTextControl);
if (!printer || !printer->isValid()) if (!printer)
return; return;
QTextDocument *tempDoc = 0; QTextDocument *tempDoc = 0;
const QTextDocument *doc = d->doc; const QTextDocument *doc = d->doc;
#if 0
// ####
if (printer->printRange() == QPrinter::Selection) { if (printer->printRange() == QPrinter::Selection) {
if (!d->cursor.hasSelection()) if (!d->cursor.hasSelection())
return; return;
@ -2445,10 +2446,10 @@ void QWidgetTextControl::print(QPrinter *printer) const
// copy the custom object handlers // copy the custom object handlers
doc->documentLayout()->d_func()->handlers = d->doc->documentLayout()->d_func()->handlers; doc->documentLayout()->d_func()->handlers = d->doc->documentLayout()->d_func()->handlers;
} }
#endif
doc->print(printer); doc->print(printer);
delete tempDoc; delete tempDoc;
} }
#endif // QT_NO_PRINTER
QMimeData *QWidgetTextControl::createMimeDataFromSelection() const QMimeData *QWidgetTextControl::createMimeDataFromSelection() const
{ {

View File

@ -176,9 +176,7 @@ public:
bool isWordSelectionEnabled() const; bool isWordSelectionEnabled() const;
void setWordSelectionEnabled(bool enabled); void setWordSelectionEnabled(bool enabled);
#ifndef QT_NO_PRINTER void print(QPagedPaintDevice *printer) const;
void print(QPrinter *printer) const;
#endif
virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const; virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const;
virtual QRectF blockBoundingRect(const QTextBlock &block) const; virtual QRectF blockBoundingRect(const QTextBlock &block) const;