X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fgui%2Fwidgets%2FBasicBlockWidget.cxx;h=6d615b41eed305861c6e4e20033ff564cf8f837f;hp=efa7ec34394ec6d2416933c99d452d1b054032fa;hb=dfee3a7d828b09c19ab3c03db17be627b952dcd7;hpb=3a4fade0292b9b8776c6195467b70a8f25a3b1c7 diff --git a/src/gui/widgets/BasicBlockWidget.cxx b/src/gui/widgets/BasicBlockWidget.cxx index efa7ec3..6d615b4 100644 --- a/src/gui/widgets/BasicBlockWidget.cxx +++ b/src/gui/widgets/BasicBlockWidget.cxx @@ -15,6 +15,8 @@ public: CustomQGraphicsTextItem(const QString& text, BasicBlockWidget* parent) : QGraphicsTextItem(text, parent), parent(parent) {} void contextMenuEvent(QGraphicsSceneContextMenuEvent*); + + void adjustSize(); private: void addComment(int row, bool global); @@ -70,9 +72,21 @@ void CustomQGraphicsTextItem::contextMenuEvent(QGraphicsSceneContextMenuEvent* e menu.exec(event->screenPos()); } +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(270), height(45), name(name) + : width(200), height(45), name(name) , _table(NULL) , block(block), mainwindow(mainwindow) , logger(log4cxx::Logger::getLogger("gui.BasicBlockWidget." + name.toStdString())) { @@ -117,6 +131,9 @@ void BasicBlockWidget::updateFunctionName(RenameFunctionEvent *event) { c.movePosition(QTextCursor::Left, QTextCursor::KeepAnchor, i.fragment().length()); c.movePosition(QTextCursor::WordRight, QTextCursor::KeepAnchor); c.insertText(event->new_name.c_str()); + + QGraphicsTextItem* item = _widget.get(); + ((CustomQGraphicsTextItem*)item)->adjustSize(); } } } @@ -144,6 +161,8 @@ void BasicBlockWidget::changeCommentHandler(ChangeCommentEvent* event) { } cursor.removeSelectedText(); cursor.insertHtml(formatComments(&*inst_it)); + QGraphicsTextItem* item = _widget.get(); + ((CustomQGraphicsTextItem*)item)->adjustSize(); } } @@ -168,7 +187,7 @@ void BasicBlockWidget::populateWidget() { bytestring += hexdigits[byte & 0xF]; bytestring += ' '; } - _table->cellAt(row, 0).firstCursorPosition().insertText(bytestring); + _table->cellAt(row, 0).firstCursorPosition().insertHtml("" + bytestring + ""); QString line = inst.getText().c_str(); line = line.replace('\t', ' ').toHtmlEscaped(); @@ -186,9 +205,11 @@ void BasicBlockWidget::populateWidget() { } line = "" + line + ""; } - _table->cellAt(row, 1).firstCursorPosition().insertHtml(line); + _table->cellAt(row, 1).firstCursorPosition().insertHtml("" + line + ""); _table->cellAt(row, 2).firstCursorPosition().insertHtml(formatComments(&inst)); } + QGraphicsTextItem* item = _widget.get(); + ((CustomQGraphicsTextItem*)item)->adjustSize(); } QString BasicBlockWidget::formatComments(Instruction* inst) { @@ -202,7 +223,6 @@ QString BasicBlockWidget::formatComments(Instruction* inst) { void BasicBlockWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem*, QWidget*) { - _widget->adjustSize(); width = 10 + _widget->boundingRect().width(); height = 25 + _widget->boundingRect().height(); if (width < 250) width = 250;