From b42f70e6d8d79544fd1b9aedd4101a05ca5ef5da Mon Sep 17 00:00:00 2001 From: Tal Neoran Date: Sun, 23 May 2021 16:51:53 +0300 Subject: [PATCH] Add moderation buttons in search popup (#2803) --- CHANGELOG.md | 1 + src/widgets/helper/ChannelView.cpp | 29 ++++++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0064f01f3..595c8a867 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unversioned +- Minor: Added moderation buttons to search popup when searching in a split with moderation mode enabled. (#2148, #2803) - Minor: Made "#channel" in `/mentions` tab show in usercards and in the search popup. (#2802) - Minor: Added settings to disable custom FrankerFaceZ VIP/mod badges. (#2693, #2759) - Bugfix: Fixed FFZ emote links for global emotes (#2807, #2808) diff --git a/src/widgets/helper/ChannelView.cpp b/src/widgets/helper/ChannelView.cpp index fd8e47520..da715d35e 100644 --- a/src/widgets/helper/ChannelView.cpp +++ b/src/widgets/helper/ChannelView.cpp @@ -46,6 +46,7 @@ #include "widgets/dialogs/SettingsDialog.hpp" #include "widgets/dialogs/UserInfoPopup.hpp" #include "widgets/helper/EffectLabel.hpp" +#include "widgets/helper/SearchPopup.hpp" #include "widgets/splits/Split.hpp" #define DRAW_WIDTH (this->width()) @@ -999,6 +1000,16 @@ MessageElementFlags ChannelView::getFlags() const Split *split = dynamic_cast(this->parentWidget()); + if (split == nullptr) + { + SearchPopup *searchPopup = + dynamic_cast(this->parentWidget()); + if (searchPopup != nullptr) + { + split = dynamic_cast(searchPopup->parentWidget()); + } + } + if (split != nullptr) { if (split->getModerationMode()) @@ -2059,14 +2070,26 @@ void ChannelView::handleLinkClick(QMouseEvent *event, const Link &link, case Link::UserAction: { QString value = link.value; + ChannelPtr channel = this->underlyingChannel_; + SearchPopup *searchPopup = + dynamic_cast(this->parentWidget()); + if (searchPopup != nullptr) + { + Split *split = + dynamic_cast(searchPopup->parentWidget()); + if (split != nullptr) + { + channel = split->getChannel(); + } + } + value.replace("{user}", layout->getMessage()->loginName) .replace("{channel}", this->channel_->getName()) .replace("{msg-id}", layout->getMessage()->id) .replace("{message}", layout->getMessage()->messageText); - value = getApp()->commands->execCommand( - value, this->underlyingChannel_, false); - this->underlyingChannel_->sendMessage(value); + value = getApp()->commands->execCommand(value, channel, false); + channel->sendMessage(value); } break;