fix: more force relayout on timeout/clear/delete (#5854)

This commit is contained in:
pajlada
2025-01-25 11:42:55 +01:00
committed by GitHub
parent 16aec8eac1
commit 3214e0a80b
6 changed files with 26 additions and 22 deletions
+1 -1
View File
@@ -14,7 +14,7 @@
- Bugfix: Fixed tabs not scaling to the default scale when changing the scale from a non-default value. (#5794) - Bugfix: Fixed tabs not scaling to the default scale when changing the scale from a non-default value. (#5794)
- Bugfix: Closing a usercard will no longer cause stop-logging messages to be generated in channel logs. (#5828) - Bugfix: Closing a usercard will no longer cause stop-logging messages to be generated in channel logs. (#5828)
- Bugfix: Fixed tabs not scaling to the default scale when changing the scale from a non-default value. (#5794, #5833) - Bugfix: Fixed tabs not scaling to the default scale when changing the scale from a non-default value. (#5794, #5833)
- Bugfix: Fixed deleted messages not disappearing when "Hide deleted messages" is enabled. (#5844) - Bugfix: Fixed deleted messages not immediately disappearing when "Hide deleted messages" is enabled. (#5844, #5854)
- Dev: Highlight checks now use non-capturing groups for the boundaries. (#5784) - Dev: Highlight checks now use non-capturing groups for the boundaries. (#5784)
- Dev: Updated Conan dependencies. (#5776) - Dev: Updated Conan dependencies. (#5776)
- Dev: Replaced usage of `parseTime` with `serverReceivedTime` for clearchat messages. (#5824) - Dev: Replaced usage of `parseTime` with `serverReceivedTime` for clearchat messages. (#5824)
-15
View File
@@ -4,22 +4,10 @@
#include "messages/Message.hpp" #include "messages/Message.hpp"
#include "messages/MessageBuilder.hpp" #include "messages/MessageBuilder.hpp"
#include "messages/MessageSimilarity.hpp" #include "messages/MessageSimilarity.hpp"
#include "providers/twitch/IrcMessageHandler.hpp"
#include "providers/twitch/TwitchIrcServer.hpp"
#include "singletons/Emotes.hpp"
#include "singletons/Logging.hpp" #include "singletons/Logging.hpp"
#include "singletons/Settings.hpp" #include "singletons/Settings.hpp"
#include "singletons/WindowManager.hpp"
#include "util/ChannelHelpers.hpp" #include "util/ChannelHelpers.hpp"
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
namespace chatterino { namespace chatterino {
// //
@@ -135,9 +123,6 @@ void Channel::addOrReplaceTimeout(MessagePtr message, const QDateTime &now)
this->addMessage(msg, MessageContext::Original); this->addMessage(msg, MessageContext::Original);
}, },
true); true);
// XXX: Might need the following line
// WindowManager::instance().repaintVisibleChatWidgets(this);
} }
void Channel::addOrReplaceClearChat(MessagePtr message, const QDateTime &now) void Channel::addOrReplaceClearChat(MessagePtr message, const QDateTime &now)
+6 -5
View File
@@ -468,15 +468,16 @@ void IrcMessageHandler::handleClearChatMessage(Communi::IrcMessage *message)
{ {
chan->disableAllMessages(); chan->disableAllMessages();
chan->addOrReplaceClearChat(std::move(clearChat.message), time); chan->addOrReplaceClearChat(std::move(clearChat.message), time);
return; }
else
{
chan->addOrReplaceTimeout(std::move(clearChat.message), time);
} }
chan->addOrReplaceTimeout(std::move(clearChat.message), time);
// refresh all
getApp()->getWindows()->repaintVisibleChatWidgets(chan.get());
if (getSettings()->hideModerated) if (getSettings()->hideModerated)
{ {
// XXX: This is expensive. We could use a layout request if the layout
// would store the previous message flags.
getApp()->getWindows()->forceLayoutChannelViews(); getApp()->getWindows()->forceLayoutChannelViews();
} }
} }
+12
View File
@@ -252,6 +252,12 @@ void TwitchIrcServer::initialize()
auto now = QDateTime::currentDateTime(); auto now = QDateTime::currentDateTime();
chan->addOrReplaceClearChat( chan->addOrReplaceClearChat(
MessageBuilder::makeClearChatMessage(now, actor), now); MessageBuilder::makeClearChatMessage(now, actor), now);
if (getSettings()->hideModerated)
{
// XXX: This is expensive. We could use a layout request if the layout
// would store the previous message flags.
getApp()->getWindows()->forceLayoutChannelViews();
}
}); });
}); });
@@ -317,6 +323,12 @@ void TwitchIrcServer::initialize()
msg->flags.set(MessageFlag::PubSub); msg->flags.set(MessageFlag::PubSub);
chan->addOrReplaceTimeout(msg.release(), chan->addOrReplaceTimeout(msg.release(),
QDateTime::currentDateTime()); QDateTime::currentDateTime());
if (getSettings()->hideModerated)
{
// XXX: This is expensive. We could use a layout request if the layout
// would store the previous message flags.
getApp()->getWindows()->forceLayoutChannelViews();
}
}); });
}); });
+3
View File
@@ -144,6 +144,9 @@ WindowManager::WindowManager(const Paths &paths, Settings &settings,
this->forceLayoutChannelViewsListener.add(settings.boldUsernames); this->forceLayoutChannelViewsListener.add(settings.boldUsernames);
this->forceLayoutChannelViewsListener.add( this->forceLayoutChannelViewsListener.add(
settings.showBlockedTermAutomodMessages); settings.showBlockedTermAutomodMessages);
this->forceLayoutChannelViewsListener.add(settings.hideModerated);
this->forceLayoutChannelViewsListener.add(
settings.streamerModeHideModActions);
this->layoutChannelViewsListener.add(settings.timestampFormat); this->layoutChannelViewsListener.add(settings.timestampFormat);
this->layoutChannelViewsListener.add(fonts.fontChanged); this->layoutChannelViewsListener.add(fonts.fontChanged);
+4 -1
View File
@@ -10,7 +10,10 @@ namespace chatterino {
VectorMessageSink::VectorMessageSink(MessageSinkTraits traits, VectorMessageSink::VectorMessageSink(MessageSinkTraits traits,
MessageFlags additionalFlags) MessageFlags additionalFlags)
: additionalFlags(additionalFlags) : additionalFlags(additionalFlags)
, traits(traits){}; , traits(traits)
{
}
VectorMessageSink::~VectorMessageSink() = default; VectorMessageSink::~VectorMessageSink() = default;
void VectorMessageSink::addMessage(MessagePtr message, MessageContext ctx, void VectorMessageSink::addMessage(MessagePtr message, MessageContext ctx,