X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fchatitem.cpp;h=d1ec8116d2e14c383814cecd47a3f8e4adcd04d9;hb=d233de84d30fec0d32c6a464b1b457cf2d1ce4e3;hp=03a5ddc214625a35bf318ec71eb511edfe4a6168;hpb=6353231ed1d32a5be3580ba60a06d9cf588ad877;p=quassel.git diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index 03a5ddc2..d1ec8116 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -116,6 +116,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 +152,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 +348,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 +391,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) { @@ -392,15 +399,8 @@ void SenderChatItem::handleClick(const QPointF &pos, ChatScene::ClickMode clickM BufferInfo curBufInfo = Client::networkModel()->bufferInfo(data(MessageModel::BufferIdRole).value()); QString nick = data(MessageModel::EditRole).toString(); // check if the nick is a valid ircUser - if(!nick.isEmpty() && Client::network(curBufInfo.networkId())->ircUser(nick)) { - BufferId targetBufId = Client::networkModel()->bufferId(curBufInfo.networkId(), nick); - if(targetBufId.isValid()) { // querybuffer exists - Client::bufferModel()->switchToBuffer(targetBufId); - } - else { // we create it - Client::userInput(curBufInfo, QString("/QUERY %1").arg(nick)); - } - } + if(!nick.isEmpty() && Client::network(curBufInfo.networkId())->ircUser(nick)) + Client::bufferModel()->switchToOrStartQuery(curBufInfo.networkId(), nick); } else ChatItem::handleClick(pos, clickMode);