From ce155299e9f967bbd4ebf38f7b490f8511b4230e Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 26 Aug 2018 11:42:00 +0300 Subject: [PATCH] Added right-click on nickname to reply on whisper. (#680) --- src/messages/Link.hpp | 1 + src/providers/twitch/TwitchMessageBuilder.cpp | 2 +- src/widgets/helper/ChannelView.cpp | 15 +++++++++++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/messages/Link.hpp b/src/messages/Link.hpp index a07d21cf3..38000982f 100644 --- a/src/messages/Link.hpp +++ b/src/messages/Link.hpp @@ -13,6 +13,7 @@ public: UserInfo, UserTimeout, UserBan, + UserWhisper, InsertText, ShowMessage, UserAction, diff --git a/src/providers/twitch/TwitchMessageBuilder.cpp b/src/providers/twitch/TwitchMessageBuilder.cpp index 389027004..a6647d88e 100644 --- a/src/providers/twitch/TwitchMessageBuilder.cpp +++ b/src/providers/twitch/TwitchMessageBuilder.cpp @@ -438,7 +438,7 @@ void TwitchMessageBuilder::appendUsername() this->emplace(usernameText, MessageElementFlag::Username, this->usernameColor_, FontStyle::ChatMediumBold) - ->setLink({Link::UserInfo, this->message().displayName}); + ->setLink({Link::UserWhisper, this->message().displayName}); auto currentUser = app->accounts->twitch.getCurrent(); diff --git a/src/widgets/helper/ChannelView.cpp b/src/widgets/helper/ChannelView.cpp index 890356eac..64ccfbf4f 100644 --- a/src/widgets/helper/ChannelView.cpp +++ b/src/widgets/helper/ChannelView.cpp @@ -1033,12 +1033,18 @@ void ChannelView::handleMouseClick(QMouseEvent *event, } } break; case Qt::RightButton: { + + auto insertText = [=](QString text) { + if (auto split = dynamic_cast(this->parentWidget())) { + split->insertTextToInput(text); + } + }; + auto &link = hoveredElement->getLink(); if (link.type == Link::UserInfo) { - Split *split = dynamic_cast(this->parentWidget()); - if (split != nullptr) { - split->insertTextToInput("@" + link.value + ", "); - } + insertText("@" + link.value + ", "); + } else if (link.type == Link::UserWhisper) { + insertText("/w " + link.value + " "); } else { this->addContextMenuItems(hoveredElement, layout); } @@ -1155,6 +1161,7 @@ void ChannelView::handleLinkClick(QMouseEvent *event, const Link &link, } switch (link.type) { + case Link::UserWhisper: case Link::UserInfo: { auto user = link.value;