From da2e8bbf7ba3300b7c41220071fbcdd2d2a8d9ef Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 21 Sep 2020 10:03:48 +0200 Subject: [PATCH] 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 --- src/plugins/texteditor/texteditor.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 8a2036f5244..7e2d990fe5a 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());