X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatitem.cpp;h=05f0944361083850e5ffe9f1a2ab0f1c8ad09500;hp=2ca66aa17b9d07c30256fc7e829255e6e8bb907c;hb=1b8b7589f2fb30e1b3583a8914dabced8a190655;hpb=edc446b0c31b048efddaf1943cb85eb0db6a0faa diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index 2ca66aa1..05f09443 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -48,6 +48,39 @@ ChatItem::ChatItem(const QRectF &boundingRect, ChatLine *parent) } +ChatLine *ChatItem::chatLine() const { + return _parent; +} + +ChatScene *ChatItem::chatScene() const { + return chatLine()->chatScene(); +} + +const QAbstractItemModel *ChatItem::model() const { + return chatLine()->model(); +} + +int ChatItem::row() const { + return chatLine()->row(); +} + +QPointF ChatItem::mapToLine(const QPointF &p) const { + return p + pos(); +} + +QPointF ChatItem::mapFromLine(const QPointF &p) const { + return p - pos(); +} + +// relative to the ChatLine +QPointF ChatItem::mapToScene(const QPointF &p) const { + return chatLine()->mapToScene(p /* + pos() */); +} + +QPointF ChatItem::mapFromScene(const QPointF &p) const { + return chatLine()->mapFromScene(p) /* - pos() */; +} + QVariant ChatItem::data(int role) const { QModelIndex index = model()->index(row(), column()); if(!index.isValid()) { @@ -116,6 +149,8 @@ void ChatItem::paintBackground(QPainter *painter) { // This is a deliberate trade-off. (-> selectFmt creation, data() call) void ChatItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(option); Q_UNUSED(widget); + painter->save(); + painter->setClipRect(boundingRect()); paintBackground(painter); QTextLayout layout; @@ -150,6 +185,8 @@ void ChatItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, // } // 3) draw bounding rect // painter->drawRect(_boundingRect.adjusted(0, 0, -1, -1)); + + painter->restore(); } void ChatItem::overlayFormat(UiStyle::FormatList &fmtList, int start, int end, quint32 overlayFmt) const { @@ -344,6 +381,8 @@ void ChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) { void SenderChatItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(option); Q_UNUSED(widget); + painter->save(); + painter->setClipRect(boundingRect()); paintBackground(painter); QTextLayout layout; @@ -385,6 +424,7 @@ void SenderChatItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *op } else { layout.draw(painter, pos(), additionalFormats(), boundingRect()); } + painter->restore(); } void SenderChatItem::handleClick(const QPointF &pos, ChatScene::ClickMode clickMode) {