print: windows: Fix setting page orientation

Previously when PPK_Orientation property was set, updateMetrics() was
called before doReinit() and updateMetrics() used physical dimensions
of the DC initialized with previous orientation, which resulted in
miscalculation of m_paintRectPixels, origin_x and origin_y variables.

This bug manifested itself as all sorts of weird behavior, such as
unexpected margins when changing paper size and printing beyond paper
margins.

Pick-to: 6.5
Change-Id: I2d0e104bee11165e3541e7f3119b29edd4b882c8
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
(cherry picked from commit 223b92490edfd4e3e75e634831258c54d5b0a501)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Jarkko Koivikko 2024-03-12 15:56:10 +02:00 committed by Qt Cherry-pick Bot
parent 164363e186
commit ff5bda7e11

View File

@ -1150,8 +1150,8 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &
d->devMode->dmOrientation = orientation == QPageLayout::Landscape ? DMORIENT_LANDSCAPE : DMORIENT_PORTRAIT;
d->devMode->dmFields |= DM_ORIENTATION;
d->m_pageLayout.setOrientation(orientation);
d->updateMetrics();
d->doReinit();
d->updateMetrics();
#ifdef QT_DEBUG_METRICS
qDebug() << "QWin32PrintEngine::setProperty(PPK_Orientation," << orientation << ')';
d->debugMetrics();