From 2486ab6ab9c8538287cde97cb0c2de8c4402c0d1 Mon Sep 17 00:00:00 2001 From: Christoph Egger Date: Tue, 26 May 2015 18:04:24 +0200 Subject: [PATCH] in populateWidget create new TextDocument and attach it at the end This is a *huge* performance improvement. Instead of using the QTextDocument already attached to the QGraphicsTextItem, we create a new QTextDocument and fill it. Only at the end of populateWidget() we attach it to the QGraphicsTextItem. This way it will only be layouted once and not per insert (three times per instruction). --- src/gui/widgets/BasicBlockWidget.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/widgets/BasicBlockWidget.cxx b/src/gui/widgets/BasicBlockWidget.cxx index 77a1493..78618c4 100644 --- a/src/gui/widgets/BasicBlockWidget.cxx +++ b/src/gui/widgets/BasicBlockWidget.cxx @@ -219,6 +219,7 @@ void BasicBlockWidget::changeCommentHandler(ChangeCommentEvent* event) { void BasicBlockWidget::populateWidget() { int row; QTextTableFormat format; + QTextDocument* document = new QTextDocument(); format.setBorderStyle(QTextFrameFormat::BorderStyle_None); format.setBorder(0); @@ -228,7 +229,7 @@ void BasicBlockWidget::populateWidget() { _table->appendRows(1); } else { row = 0; - _table = _widget->textCursor().insertTable(1, 3, format); + _table = QTextCursor(document).insertTable(1, 3, format); } QString bytestring; for (uint8_t byte : inst.getBytes()) { @@ -259,6 +260,7 @@ void BasicBlockWidget::populateWidget() { _table->cellAt(row, 2).firstCursorPosition().insertHtml(formatComments(&inst)); } QGraphicsTextItem* item = _widget.get(); + item->setDocument(document); ((CustomQGraphicsTextItem*)item)->adjustSize(); } -- 2.39.5