CustomQGraphicsTextItem(const QString& text, BasicBlockWidget* parent)
: QGraphicsTextItem(text, parent), parent(parent) {}
void contextMenuEvent(QGraphicsSceneContextMenuEvent*);
-
- void adjustSize();
private:
void addComment(int row, bool global);
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)
c.insertText(event->new_name.c_str());
QGraphicsTextItem* item = _widget.get();
- ((CustomQGraphicsTextItem*)item)->adjustSize();
+ item->adjustSize();
}
}
}
cursor.removeSelectedText();
cursor.insertHtml(formatComments(&*inst_it));
QGraphicsTextItem* item = _widget.get();
- ((CustomQGraphicsTextItem*)item)->adjustSize();
+ item->adjustSize();
}
}
}
QGraphicsTextItem* item = _widget.get();
item->setDocument(document);
- ((CustomQGraphicsTextItem*)item)->adjustSize();
+ item->adjustSize();
}
QString BasicBlockWidget::formatComments(Instruction* inst) {