From: Christoph Egger Date: Tue, 26 May 2015 16:04:24 +0000 (+0200) Subject: in populateWidget create new TextDocument and attach it at the end X-Git-Tag: v0.2~6 X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=commitdiff_plain;h=2486ab6ab9c8538287cde97cb0c2de8c4402c0d1;hp=4e10c813f57981265534133a6d857fd66c6edccc 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). --- 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(); }