X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fchatitem.cpp;fp=src%2Fqtui%2Fchatitem.cpp;h=03a5ddc214625a35bf318ec71eb511edfe4a6168;hb=6353231ed1d32a5be3580ba60a06d9cf588ad877;hp=4855f0c168eae123c7b2a1f78985f942a6f11e75;hpb=513c0edce6f4c69f16e6a00c144877e8d5940096;p=quassel.git diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index 4855f0c1..03a5ddc2 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -387,6 +387,25 @@ void SenderChatItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *op } } +void SenderChatItem::handleClick(const QPointF &pos, ChatScene::ClickMode clickMode) { + if(clickMode == ChatScene::DoubleClick) { + 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)); + } + } + } + else + ChatItem::handleClick(pos, clickMode); +} + // ************************************************************ // ContentsChatItem // ************************************************************