]> git.siccegge.de Git - frida/frida.git/blobdiff - src/gui/widgets/BasicBlockWidget.cxx
Remove adjustSize() hack -- doesn't seem to be necessary any more
[frida/frida.git] / src / gui / widgets / BasicBlockWidget.cxx
index 2a3f3b7d992f30f4f5089754a1016bf221ac13c7..eee78c4ea55d06b47e672afeb10367967b3e8a30 100644 (file)
@@ -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)
@@ -117,7 +90,8 @@ BasicBlockWidget::BasicBlockWidget(const QString& name, BasicBlock * block,
        , logger(log4cxx::Logger::getLogger("gui.BasicBlockWidget." + name.toStdString())) {
        next[0] = NULL; next[1] = NULL;
 
-       block->getManager()->registerRenameFunctionEvent([=](RenameFunctionEvent* event) {updateFunctionName(event);});
+       QObject::connect(block->getManager(), &InformationManager::renameFunctionEvent,
+                        [=](RenameFunctionEvent* event) {updateFunctionName(event);});
 
        _widget.reset(new CustomQGraphicsTextItem("", this));
        _widget->setPos(5, 20);
@@ -150,7 +124,8 @@ BasicBlockWidget::BasicBlockWidget(const QString& name, BasicBlock * block,
                         });
        instructions = block->getInstructions();
        populateWidget();
-       block->getManager()->registerChangeCommentEvent([=](ChangeCommentEvent* e) {changeCommentHandler(e);});
+       QObject::connect(block->getManager(), &InformationManager::changeCommentEvent,
+                        [=](ChangeCommentEvent* e) {changeCommentHandler(e);});
 }
 
 void BasicBlockWidget::updateFunctionName(RenameFunctionEvent *event) {
@@ -181,7 +156,7 @@ void BasicBlockWidget::updateFunctionName(RenameFunctionEvent *event) {
                                        c.insertText(event->new_name.c_str());
 
                                        QGraphicsTextItem* item = _widget.get();
-                                       ((CustomQGraphicsTextItem*)item)->adjustSize();
+                                       item->adjustSize();
                                }
                        }
                }
@@ -210,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);
 
@@ -226,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()) {
@@ -257,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) {