X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fgui%2Fwidgets%2FBasicBlockWidget.cxx;h=eee78c4ea55d06b47e672afeb10367967b3e8a30;hp=77a14932999adeedfddc1c77517773909c029bb7;hb=9ec8606194f7996edf21615ac34007e1391eb80f;hpb=1b43b26ba9b23cb5f3004db7b9b00f6b08227563 diff --git a/src/gui/widgets/BasicBlockWidget.cxx b/src/gui/widgets/BasicBlockWidget.cxx index 77a1493..eee78c4 100644 --- a/src/gui/widgets/BasicBlockWidget.cxx +++ b/src/gui/widgets/BasicBlockWidget.cxx @@ -16,8 +16,6 @@ public: CustomQGraphicsTextItem(const QString& text, BasicBlockWidget* parent) : QGraphicsTextItem(text, parent), parent(parent) {} void contextMenuEvent(QGraphicsSceneContextMenuEvent*); - - void adjustSize(); private: void addComment(int row, bool global); @@ -84,31 +82,6 @@ void CustomQGraphicsTextItem::contextMenuEvent(QGraphicsSceneContextMenuEvent* e menu.exec(event->screenPos()); } -/* QGraphicsTextItem has an adjustSize() function that is supposed to - * resize the widget to it's "ideal" size. However it totally ignores - * all directives to not wrap lines and "ideal" is actually just a - * bunch of heuristics. - * - * We are starting with a hopefully absurdly large startingwidth and - * reduce it untill a line is broken (detected by a change in - * height). As long as the width (1000 here) is sufficiently large, - * this should give us a widget without any line-wrapping. - * - * One needs to call this on a Pointer of tye CustomQGraphicsTextItem - * as the adjustSize() function is not polymorphic (vurtual). - */ -void CustomQGraphicsTextItem::adjustSize() { - int width = 1000; - setTextWidth(width); - int height = boundingRect().height(); - while (width > 250 && height == boundingRect().height()) { - setTextWidth(width -= 10); - } - width += 10; - if (width < 250) width = 250; - setTextWidth(width); -} - BasicBlockWidget::BasicBlockWidget(const QString& name, BasicBlock * block, Mainwindow * mainwindow) : width(200), height(45), name(name) @@ -183,7 +156,7 @@ void BasicBlockWidget::updateFunctionName(RenameFunctionEvent *event) { c.insertText(event->new_name.c_str()); QGraphicsTextItem* item = _widget.get(); - ((CustomQGraphicsTextItem*)item)->adjustSize(); + item->adjustSize(); } } } @@ -212,13 +185,14 @@ void BasicBlockWidget::changeCommentHandler(ChangeCommentEvent* event) { cursor.removeSelectedText(); cursor.insertHtml(formatComments(&*inst_it)); QGraphicsTextItem* item = _widget.get(); - ((CustomQGraphicsTextItem*)item)->adjustSize(); + item->adjustSize(); } } void BasicBlockWidget::populateWidget() { int row; QTextTableFormat format; + QTextDocument* document = new QTextDocument(); format.setBorderStyle(QTextFrameFormat::BorderStyle_None); format.setBorder(0); @@ -228,7 +202,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,7 +233,8 @@ void BasicBlockWidget::populateWidget() { _table->cellAt(row, 2).firstCursorPosition().insertHtml(formatComments(&inst)); } QGraphicsTextItem* item = _widget.get(); - ((CustomQGraphicsTextItem*)item)->adjustSize(); + item->setDocument(document); + item->adjustSize(); } QString BasicBlockWidget::formatComments(Instruction* inst) {