diff --git a/src/messages/MessageElement.hpp b/src/messages/MessageElement.hpp index d933c8dc3..764101641 100644 --- a/src/messages/MessageElement.hpp +++ b/src/messages/MessageElement.hpp @@ -92,6 +92,10 @@ public: // used in the ChannelView class to make the collapse buttons visible if needed Collapsed = (1 << 26), + // used for dynamic bold usernames + BoldUsername = (1 << 27), + NonBoldUsername = (1 << 28), + Default = Timestamp | Badges | Username | BitsStatic | FfzEmoteImage | BttvEmoteImage | TwitchEmoteImage | BitsAmount | Text | AlwaysShow, }; diff --git a/src/providers/twitch/TwitchMessageBuilder.cpp b/src/providers/twitch/TwitchMessageBuilder.cpp index bac7baa3a..73defdf4a 100644 --- a/src/providers/twitch/TwitchMessageBuilder.cpp +++ b/src/providers/twitch/TwitchMessageBuilder.cpp @@ -218,7 +218,7 @@ MessagePtr TwitchMessageBuilder::build() QString linkString = this->matchLink(string); auto fontStyle = FontStyle::ChatMedium; - if (string.startsWith('@') && app->settings->usernameBold) { + if (string.startsWith('@') && app->settings->enableUsernameBold) { fontStyle = FontStyle::ChatMediumBold; } @@ -246,10 +246,17 @@ MessagePtr TwitchMessageBuilder::build() link = Link(Link::Url, linkString); textColor = MessageColor(MessageColor::Link); } + if (string.startsWith('@')) { + this->emplace(string, TextElement::BoldUsername, textColor, + FontStyle::ChatMediumBold) // + ->setLink(link); + this->emplace(string, TextElement::NonBoldUsername, textColor) // + ->setLink(link); + } else { + this->emplace(string, TextElement::Text, textColor) // + ->setLink(link); + } - this->emplace(string, MessageElement::Text, textColor, - fontStyle) // - ->setLink(link); } else { // is emoji this->emplace(emoteData, EmoteElement::EmojiAll); } diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index ac0cbf0b8..1eda0e815 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -43,6 +43,7 @@ public: BoolSetting enableSmoothScrolling = {"/appearance/smoothScrolling", true}; BoolSetting enableSmoothScrollingNewMessages = {"/appearance/smoothScrollingNewMessages", false}; + BoolSetting enableUsernameBold = {"/appearence/messages/boldUsernames", false}; // BoolSetting useCustomWindowFrame = {"/appearance/useCustomWindowFrame", false}; /// Behaviour @@ -108,8 +109,6 @@ public: BoolSetting inlineWhispers = {"/whispers/enableInlineWhispers", true}; - BoolSetting usernameBold = {"/appearence/messages/boldUsernames", false}; - /// External tools // Streamlink BoolSetting streamlinkUseCustomPath = {"/external/streamlink/useCustomPath", false}; diff --git a/src/singletons/WindowManager.cpp b/src/singletons/WindowManager.cpp index 4077200df..7dc3b7421 100644 --- a/src/singletons/WindowManager.cpp +++ b/src/singletons/WindowManager.cpp @@ -68,6 +68,7 @@ WindowManager::WindowManager() this->wordFlagsListener_.addSetting(settings->enableEmojis); this->wordFlagsListener_.addSetting(settings->enableFfzEmotes); this->wordFlagsListener_.addSetting(settings->enableTwitchEmotes); + this->wordFlagsListener_.addSetting(settings->enableUsernameBold); this->wordFlagsListener_.cb = [this](auto) { this->updateWordTypeMask(); // }; @@ -110,6 +111,7 @@ void WindowManager::updateWordTypeMask() // misc flags |= MEF::AlwaysShow; flags |= MEF::Collapsed; + flags |= settings->enableUsernameBold ? MEF::BoldUsername : MEF::NonBoldUsername; // update flags MessageElement::Flags newFlags = static_cast(flags); diff --git a/src/widgets/settingspages/LookPage.cpp b/src/widgets/settingspages/LookPage.cpp index b0d9baaf2..7769d5b6d 100644 --- a/src/widgets/settingspages/LookPage.cpp +++ b/src/widgets/settingspages/LookPage.cpp @@ -143,7 +143,7 @@ void LookPage::addMessageTab(LayoutCreator layout) // lowercase links layout.append(this->createCheckBox("Lowercase domains", getSettings()->lowercaseLink)); // bold usernames - layout.append(this->createCheckBox("Bold @usernames", getSettings()->usernameBold)); + layout.append(this->createCheckBox("Bold @usernames", getSettings()->enableUsernameBold)); // collapsing {