diff options
author | David Schulz <david.schulz@qt.io> | 2020-09-21 10:03:48 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2020-09-21 10:18:29 +0000 |
commit | da2e8bbf7ba3300b7c41220071fbcdd2d2a8d9ef (patch) | |
tree | 6a14237da39b6a5e614a05aeae3b79740cb6df8a /src | |
parent | 6e4de116bf1c3e96a7091212d0b897c83b633c92 (diff) |
Editor: fix hanging when using invalid printer page rect
Some printer seem to return an empty page rect for some configuration
which results in an invalide page count and a freezing ui. Do not print
anything and return in that case.
Fixes: QTCREATORBUG-24110
Change-Id: I42349bc97734e3f6a67502482d2b02959e865665
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/texteditor/texteditor.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 8a2036f524..7e2d990fe5 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -1164,6 +1164,10 @@ void TextEditorWidgetPrivate::print(QPrinter *printer) if (!p.isActive()) return; + QRectF pageRect(printer->pageRect()); + if (pageRect.isEmpty()) + return; + doc = doc->clone(doc); Utils::ExecuteOnDestruction docDeleter([doc]() { delete doc; }); @@ -1217,7 +1221,6 @@ void TextEditorWidgetPrivate::print(QPrinter *printer) fmt.setMargin(margin); doc->rootFrame()->setFrameFormat(fmt); - QRectF pageRect(printer->pageRect()); QRectF body = QRectF(0, 0, pageRect.width(), pageRect.height()); QFontMetrics fontMetrics(doc->defaultFont(), p.device()); |