diff --git a/cockatrice/src/chatview.cpp b/cockatrice/src/chatview.cpp index f3d67253..659d5c12 100644 --- a/cockatrice/src/chatview.cpp +++ b/cockatrice/src/chatview.cpp @@ -249,12 +249,15 @@ void ChatView::mousePressEvent(QMouseEvent *event) break; } case HoveredUser: { - if (event->button() == Qt::RightButton) { + if (event->button() != Qt::MidButton) { const int delimiterIndex = hoveredContent.indexOf("_"); - UserLevelFlags userLevel(hoveredContent.left(delimiterIndex).toInt()); const QString userName = hoveredContent.mid(delimiterIndex + 1); - - userContextMenu->showContextMenu(event->globalPos(), userName, userLevel); + if (event->button() == Qt::RightButton) { + UserLevelFlags userLevel(hoveredContent.left(delimiterIndex).toInt()); + userContextMenu->showContextMenu(event->globalPos(), userName, userLevel); + } + else if (event->button() == Qt::LeftButton) + emit addMentionTag("@" + userName); } break; } diff --git a/cockatrice/src/chatview.h b/cockatrice/src/chatview.h index 67849262..4f06cb5e 100644 --- a/cockatrice/src/chatview.h +++ b/cockatrice/src/chatview.h @@ -49,6 +49,7 @@ signals: void cardNameHovered(QString cardName); void showCardInfoPopup(QPoint pos, QString cardName); void deleteCardInfoPopup(QString cardName); + void addMentionTag(QString mentionTag); }; #endif diff --git a/cockatrice/src/tab_room.cpp b/cockatrice/src/tab_room.cpp index fa307e7d..18e196a6 100644 --- a/cockatrice/src/tab_room.cpp +++ b/cockatrice/src/tab_room.cpp @@ -44,6 +44,7 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI connect(chatView, SIGNAL(openMessageDialog(QString, bool)), this, SIGNAL(openMessageDialog(QString, bool))); connect(chatView, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString))); connect(chatView, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString))); + connect(chatView, SIGNAL(addMentionTag(QString)), this, SLOT(addMentionTag(QString))); sayLabel = new QLabel; sayEdit = new QLineEdit; sayLabel->setBuddy(sayEdit); @@ -225,6 +226,10 @@ void TabRoom::processRoomSayEvent(const Event_RoomSay &event) emit userEvent(false); } +void TabRoom::addMentionTag(QString mentionTag) { + sayEdit->insert(mentionTag + " "); +} + PendingCommand *TabRoom::prepareRoomCommand(const ::google::protobuf::Message &cmd) { return client->prepareRoomCommand(cmd, roomId); diff --git a/cockatrice/src/tab_room.h b/cockatrice/src/tab_room.h index 600513a2..6826cc11 100644 --- a/cockatrice/src/tab_room.h +++ b/cockatrice/src/tab_room.h @@ -56,6 +56,7 @@ private slots: void actIgnoreUnregisteredUsers(); void actClearChat(); void ignoreUnregisteredUsersChanged(); + void addMentionTag(QString mentionTag); void processListGamesEvent(const Event_ListGames &event); void processJoinRoomEvent(const Event_JoinRoom &event);