diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp index 67e7c34..8998b98 100644 --- a/src/printsupport/kernel/qprintengine_win.cpp +++ b/src/printsupport/kernel/qprintengine_win.cpp @@ -134,24 +134,30 @@ static QList > printerPaperSizes(const QString &printerName) for (int i=0; i <(int)paperNameCount; i++) result.push_back(qMakePair(QSizeF(paperSizes[i].x / 10, paperSizes[i].y / 10), papersNames[i])); } + qDebug() << __FUNCTION__ << result; return result; } // Find the best-matching printer paper for size in millimeters. static inline int findCustomPaperSize(const QSizeF &needlePt, const QString &printerName) { + qDebug() << __FUNCTION__ << needlePt; const QList > sizes = printerPaperSizes(printerName); const qreal nw = needlePt.width(); const qreal nh = needlePt.height(); for (int i = 0; i < sizes.size(); ++i) { - if (qAbs(nw - sizes.at(i).first.width()) <= 1 && qAbs(nh - sizes.at(i).first.height()) <= 1) + if (qAbs(nw - sizes.at(i).first.width()) <= 1 && qAbs(nh - sizes.at(i).first.height()) <= 1) { + qDebug() << __FUNCTION__ << "MATCH"<< i << sizes.at(i); return sizes.at(i).second; + } } + qDebug() << __FUNCTION__ << "mismatch"; return -1; } static inline void setDevModePaperFlags(DEVMODE *devMode, bool custom) { + qDebug() << __FUNCTION__ << custom; if (custom) { devMode->dmPaperSize = DMPAPER_USER; devMode->dmFields |= DM_PAPERLENGTH | DM_PAPERWIDTH; @@ -164,17 +170,21 @@ static inline void setDevModePaperFlags(DEVMODE *devMode, bool custom) QPrinter::PaperSize mapDevmodePaperSize(int s) { + qDebug() << __FUNCTION__ << s; int i = 0; while ((dmMapping[i].winSizeName > 0) && (dmMapping[i].winSizeName != s)) i++; + qDebug() << __FUNCTION__ << "returns" << dmMapping[i].qtSizeName; return dmMapping[i].qtSizeName; } static int mapPaperSizeDevmode(QPrinter::PaperSize s) { + qDebug() << __FUNCTION__ << s; int i = 0; while ((dmMapping[i].winSizeName > 0) && (dmMapping[i].qtSizeName != s)) i++; + qDebug() << __FUNCTION__ << "returns" << dmMapping[i].winSizeName; return dmMapping[i].winSizeName; } @@ -1158,6 +1168,7 @@ void QWin32PrintEnginePrivate::initDevRects() qRound(mmToInches(previousDialogMargins.top() / 100.0) * dpi_y), -qRound(mmToInches(previousDialogMargins.width() / 100.0) * dpi_x), -qRound(mmToInches(previousDialogMargins.height() / 100.0) * dpi_y)); + qDebug() << __FUNCTION__ << devPaperRect << devPhysicalPageRect; updateOrigin(); } @@ -1264,6 +1275,7 @@ void QWin32PrintEnginePrivate::updateOrigin() origin_y = devPageRect.top() - devPhysicalPageRect.y(); } } + qDebug() << __FUNCTION__ << origin_x << origin_y; } void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &value) @@ -1341,10 +1353,12 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & break; d->devMode->dmPaperSize = mapPaperSizeDevmode(QPrinter::PaperSize(value.toInt())); d->has_custom_paper_size = (QPrinter::PaperSize(value.toInt()) == QPrinter::Custom); + qDebug() << __FUNCTION__ <<"PPK_PaperSize" << d->devMode->dmPaperSize << d->has_custom_paper_size << value; setDevModePaperFlags(d->devMode, d->has_custom_paper_size); d->doReinit(); break; case PPK_PaperName: + qDebug() << __FUNCTION__ << "PPK_PaperName" << value; { if (!d->devMode) break; @@ -1371,6 +1385,7 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & NULL, DC_PAPERS, papers, NULL); QScopedArrayPointer paperSizes(new POINT[size]); DWORD paperNameCount = DeviceCapabilities(reinterpret_cast(d->name.utf16()), NULL, DC_PAPERSIZE, (wchar_t *)paperSizes.data(), NULL); + qDebug() << __FUNCTION__ << "PPK_PaperName " << d->name; if (paperNameCount == size) { const double multiplier = qt_multiplierForUnit(QPrinter::Millimeter, d->resolution); d->paper_size = QSizeF((paperSizes[paperPos].x / 10.0) * multiplier, (paperSizes[paperPos].y / 10.0) * multiplier); @@ -1379,6 +1394,7 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & d->has_custom_paper_size = true; d->devMode->dmPaperSize = papers[paperPos]; setDevModePaperFlags(d->devMode, false); + qDebug() << __FUNCTION__ << "PPK_PaperName custom" << d->has_custom_paper_size<< d->devMode->dmPaperSize ; d->doReinit(); } @@ -1432,18 +1448,21 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & break; d->has_custom_paper_size = false; d->devMode->dmPaperSize = value.toInt(); + qDebug() << __FUNCTION__ << "PPK_WindowsPageSize" << value; setDevModePaperFlags(d->devMode, d->has_custom_paper_size); d->doReinit(); break; case PPK_CustomPaperSize: { + qDebug() << __FUNCTION__ << "PPK_CustomPaperSize" << d->has_custom_paper_size << value; d->has_custom_paper_size = true; d->paper_size = value.toSizeF(); if (!d->devMode) break; const QSizeF sizeMM = qt_SizeFromUnitToMillimeter(d->paper_size, QPrinter::Point, d->resolution); const int match = findCustomPaperSize(sizeMM, d->name); + qDebug() <<__FUNCTION__ << "custom"; setDevModePaperFlags(d->devMode, (match >= 0) ? false : true); if (match >= 0) { d->devMode->dmPaperSize = match; @@ -1558,6 +1577,8 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const value = mapDevmodePaperSize(d->devMode->dmPaperSize); } } + qDebug() << __FUNCTION__ << "PPK_PaperSize" + << d->has_custom_paper_size << d->devMode->dmPaperSize << "returns" << value; break; case PPK_PaperRect: @@ -1568,6 +1589,9 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const } else { value = QTransform(1/d->stretch_x, 0, 0, 1/d->stretch_y, 0, 0).mapRect(d->devPaperRect); } + qDebug() << __FUNCTION__ << "PPK_PaperRect" << d->has_custom_paper_size + << value; + break; case PPK_PaperName: if (!d->devMode) { @@ -1958,6 +1982,7 @@ static void draw_text_item_win(const QPointF &pos, const QTextItemInt &ti, HDC h void QWin32PrintEnginePrivate::updateCustomPaperSize() { + qDebug() << __FUNCTION__; const uint paperSize = devMode->dmPaperSize; has_custom_paper_size = true; if (paperSize > 0 && mapDevmodePaperSize(paperSize) == QPrinter::Custom) { @@ -1970,6 +1995,7 @@ void QWin32PrintEnginePrivate::updateCustomPaperSize() } } } + qDebug() << __FUNCTION__ << has_custom_paper_size; } QT_END_NAMESPACE diff --git a/tests/manual/dialogs/dialogs.pro b/tests/manual/dialogs/dialogs.pro index 71c4111..f3d1756 100644 --- a/tests/manual/dialogs/dialogs.pro +++ b/tests/manual/dialogs/dialogs.pro @@ -8,3 +8,4 @@ SOURCES += main.cpp filedialogpanel.cpp colordialogpanel.cpp fontdialogpanel.cpp wizardpanel.cpp messageboxpanel.cpp printdialogpanel.cpp utils.cpp HEADERS += filedialogpanel.h colordialogpanel.h fontdialogpanel.h \ wizardpanel.h messageboxpanel.h printdialogpanel.h utils.h +CONFIG+=console