X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fgui%2Fwidgets%2FBasicBlockWidget.cxx;h=ee3b7afc0048ead4a014630349187602ea61b2a4;hp=19af3bc39b4ff1eba7475bdf377fb4d1685f2086;hb=1be668c952706beab1a68d4a3ed0f4ae98b30280;hpb=05a1a1c740e92709a5dc7fab3986517f45051d33 diff --git a/src/gui/widgets/BasicBlockWidget.cxx b/src/gui/widgets/BasicBlockWidget.cxx index 19af3bc..ee3b7af 100644 --- a/src/gui/widgets/BasicBlockWidget.cxx +++ b/src/gui/widgets/BasicBlockWidget.cxx @@ -32,12 +32,15 @@ void CustomQGraphicsTextItem::addComment(int row, bool global) { if (global) { comment = parent->block->getManager()->newGlobalComment(address); } else { + /* TODO: 0x23 as we currently don't have the function here + * and setting it to null will make the comment appear + * global. Also means local comments are largely still + * broken. + */ comment = parent->block->getManager()->newLocalComment(address, (Function*)0x23); } comment->setText(dialog.result().toStdString()); parent->block->getManager()->finishComment(comment); - -// cell.firstCursorPosition().insertHtml(QString(";; ") + dialog.result()); } else { LOG4CXX_DEBUG(parent->logger, "addComment aborted"); } @@ -72,11 +75,24 @@ 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 (height == boundingRect().height()) { + while (width > 250 && height == boundingRect().height()) { setTextWidth(width -= 10); } width += 10; @@ -124,7 +140,15 @@ void BasicBlockWidget::updateFunctionName(RenameFunctionEvent *event) { if (isLink) { if (search == format.anchorHref()) { - LOG4CXX_DEBUG(logger, i.fragment().text().toStdString() << " ---> " << format.anchorHref().toStdString()); + LOG4CXX_DEBUG(logger, i.fragment().text().toStdString() << " ---> " + << format.anchorHref().toStdString()); + + /* This should select the function name. It stars + * by selecting the whole link fragment from back + * to front and then moves one word to the back + * again deselecting whatever mnemonic is used for + * the call instruction. + */ QTextCursor c(b); c.setPosition(i.fragment().position()); c.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, i.fragment().length());