From d33e6a7b4bc8c18b1f81f28061e1ddd8125be47d Mon Sep 17 00:00:00 2001 From: nerix Date: Sun, 28 Sep 2025 12:45:41 +0200 Subject: [PATCH] fix: expose home page of badges (if available) (#6437) --- CHANGELOG.md | 1 + src/widgets/helper/ChannelView.cpp | 32 +++++++++--------------------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b9039a4..79123784 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unversioned +- Minor: Badges now link to their home page like emotes in the context menu. (#6437) - Minor: Fixed usercard resizing improperly without recent messages. (#6496) - Minor: Added setting for character limit of deleted messages. (#6491) - Dev: Update release documentation. (#6498) diff --git a/src/widgets/helper/ChannelView.cpp b/src/widgets/helper/ChannelView.cpp index 7b24c631..d3f01809 100644 --- a/src/widgets/helper/ChannelView.cpp +++ b/src/widgets/helper/ChannelView.cpp @@ -62,6 +62,7 @@ #include #include #include +#include #include #include @@ -78,8 +79,7 @@ using namespace chatterino; constexpr int SCROLLBAR_PADDING = 8; -void addEmoteContextMenuItems(QMenu *menu, const Emote &emote, - MessageElementFlags creatorFlags) +void addEmoteContextMenuItems(QMenu *menu, const Emote &emote, QStringView kind) { auto *openAction = menu->addAction("&Open"); auto *openMenu = new QMenu(menu); @@ -116,31 +116,19 @@ void addEmoteContextMenuItems(QMenu *menu, const Emote &emote, addImageLink(emote.images.getImage3()); // Copy and open emote page link - auto addPageLink = [&](const QString &name) { + if (!emote.homePage.string.isEmpty()) + { copyMenu->addSeparator(); openMenu->addSeparator(); - copyMenu->addAction("Copy " + name + " &emote link", + copyMenu->addAction(u"Copy &" % kind % u" link", [url = emote.homePage] { crossPlatformCopy(url.string); }); - openMenu->addAction("Open " + name + " &emote link", + openMenu->addAction(u"Open &" % kind % u" link", [url = emote.homePage] { QDesktopServices::openUrl(QUrl(url.string)); }); - }; - - if (creatorFlags.has(MessageElementFlag::BttvEmote)) - { - addPageLink("BTTV"); - } - else if (creatorFlags.has(MessageElementFlag::FfzEmote)) - { - addPageLink("FFZ"); - } - else if (creatorFlags.has(MessageElementFlag::SevenTVEmote)) - { - addPageLink("7TV"); } } @@ -161,8 +149,7 @@ void addImageContextMenuItems(QMenu *menu, if (const auto *badgeElement = dynamic_cast(&creator)) { - addEmoteContextMenuItems(menu, *badgeElement->getEmote(), - creatorFlags); + addEmoteContextMenuItems(menu, *badgeElement->getEmote(), u"badge"); } } @@ -173,8 +160,7 @@ void addImageContextMenuItems(QMenu *menu, if (const auto *emoteElement = dynamic_cast(&creator)) { - addEmoteContextMenuItems(menu, *emoteElement->getEmote(), - creatorFlags); + addEmoteContextMenuItems(menu, *emoteElement->getEmote(), u"emote"); } else if (const auto *layeredElement = dynamic_cast(&creator)) @@ -185,7 +171,7 @@ void addImageContextMenuItems(QMenu *menu, auto *emoteAction = menu->addAction(emote.ptr->name.string); auto *emoteMenu = new QMenu(menu); emoteAction->setMenu(emoteMenu); - addEmoteContextMenuItems(emoteMenu, *emote.ptr, emote.flags); + addEmoteContextMenuItems(emoteMenu, *emote.ptr, u"emote"); } } }