From edbdcc1d55e1e1bc6e3b9422f1327bef2c099963 Mon Sep 17 00:00:00 2001 From: fourtf Date: Sun, 6 Apr 2025 14:21:34 +0200 Subject: [PATCH] feat: allow disabling fading recent messages (#6121) --- CHANGELOG.md | 1 + src/messages/layouts/MessageLayout.cpp | 3 ++- src/messages/layouts/MessageLayoutContext.cpp | 6 ++++++ src/messages/layouts/MessageLayoutContext.hpp | 2 ++ src/singletons/Settings.hpp | 2 ++ src/singletons/WindowManager.cpp | 1 + src/widgets/settingspages/GeneralPage.cpp | 7 +++++++ 7 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5846bec4..ca8b2c31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unversioned +- Minor: Add an option for the reduced opacity of message history. (#6121) - Minor: Make paused chat indicator more visible, and fix its zoom behavior. (#6123) - Bugfix: Don't create native messaging manifest file if browser directory doesn't exist. (#6116) - Bugfix: Make reply-cancel button less coarse-grained. (#6106) diff --git a/src/messages/layouts/MessageLayout.cpp b/src/messages/layouts/MessageLayout.cpp index 5e4bc4db..f197133c 100644 --- a/src/messages/layouts/MessageLayout.cpp +++ b/src/messages/layouts/MessageLayout.cpp @@ -249,7 +249,8 @@ MessagePaintResult MessageLayout::paint(const MessagePaintContext &ctx) ctx.messageColors.disabled); } - if (this->message_->flags.has(MessageFlag::RecentMessage)) + if (this->message_->flags.has(MessageFlag::RecentMessage) && + ctx.preferences.fadeMessageHistory) { ctx.painter.fillRect(0, ctx.y, pixmap->width(), pixmap->height(), ctx.messageColors.disabled); diff --git a/src/messages/layouts/MessageLayoutContext.cpp b/src/messages/layouts/MessageLayoutContext.cpp index f754ea40..650892c3 100644 --- a/src/messages/layouts/MessageLayoutContext.cpp +++ b/src/messages/layouts/MessageLayoutContext.cpp @@ -106,6 +106,12 @@ void MessagePreferences::connectSettings(Settings *settings, this->lastMessagePattern = static_cast(newValue); }, holder); + + settings->fadeMessageHistory.connect( + [this](const auto &newValue) { + this->fadeMessageHistory = newValue; + }, + holder); } } // namespace chatterino diff --git a/src/messages/layouts/MessageLayoutContext.hpp b/src/messages/layouts/MessageLayoutContext.hpp index b7a9b688..c8088f89 100644 --- a/src/messages/layouts/MessageLayoutContext.hpp +++ b/src/messages/layouts/MessageLayoutContext.hpp @@ -55,6 +55,8 @@ struct MessagePreferences { bool alternateMessages{}; bool separateMessages{}; + bool fadeMessageHistory{}; + void connectSettings(Settings *settings, pajlada::Signals::SignalHolder &holder); }; diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index 01f09cc1..49563ba6 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -145,6 +145,8 @@ public: "/appearance/messages/messageOverflow", MessageOverflow::Highlight}; BoolSetting separateMessages = {"/appearance/messages/separateMessages", false}; + BoolSetting fadeMessageHistory = {"/appearance/messages/fadeMessageHistory", + true}; BoolSetting hideModerated = {"/appearance/messages/hideModerated", false}; BoolSetting hideModerationActions = { "/appearance/messages/hideModerationActions", false}; diff --git a/src/singletons/WindowManager.cpp b/src/singletons/WindowManager.cpp index 632c2f7c..7fd2f5a4 100644 --- a/src/singletons/WindowManager.cpp +++ b/src/singletons/WindowManager.cpp @@ -168,6 +168,7 @@ WindowManager::WindowManager(const Paths &paths, Settings &settings, this->invalidateChannelViewBuffersListener.add(settings.alternateMessages); this->invalidateChannelViewBuffersListener.add(settings.separateMessages); + this->invalidateChannelViewBuffersListener.add(settings.fadeMessageHistory); this->repaintVisibleChatWidgetsListener.add( this->themes.repaintVisibleChatWidgets_); diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index 70bee3a0..78f087c2 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -505,6 +505,13 @@ void GeneralPage::initLayout(GeneralPageView &layout) "message to help better tell them apart.") ->addTo(layout); + SettingWidget::checkbox("Reduce opacity of message history", + s.fadeMessageHistory) + ->setTooltip( + "Reduce opacity of messages that were posted before Chatterino " + "was started or while re-connection.") + ->addTo(layout); + SettingWidget::checkbox("Hide deleted messages", s.hideModerated) ->setTooltip( "When enabled, messages deleted by moderators will be hidden.")