diff --git a/src/common/Channel.cpp b/src/common/Channel.cpp index 15d18f26..905bd1b6 100644 --- a/src/common/Channel.cpp +++ b/src/common/Channel.cpp @@ -154,8 +154,9 @@ void Channel::addOrReplaceTimeout(MessagePtr message) for (int i = 0; i < snapshotLength; i++) { auto &s = snapshot[i]; - if (s->flags.hasNone({MessageFlag::Timeout, MessageFlag::Untimeout}) && - s->loginName == message->timeoutUser) + if (s->loginName == message->timeoutUser && + s->flags.hasNone({MessageFlag::Timeout, MessageFlag::Untimeout, + MessageFlag::Whisper})) { // FOURTF: disabled for now // PAJLADA: Shitty solution described in Message.hpp @@ -179,7 +180,8 @@ void Channel::disableAllMessages() for (int i = 0; i < snapshotLength; i++) { auto &message = snapshot[i]; - if (message->flags.hasAny({MessageFlag::System, MessageFlag::Timeout})) + if (message->flags.hasAny({MessageFlag::System, MessageFlag::Timeout, + MessageFlag::Whisper})) { continue; } diff --git a/src/common/Channel.hpp b/src/common/Channel.hpp index 09795756..c45d9c97 100644 --- a/src/common/Channel.hpp +++ b/src/common/Channel.hpp @@ -15,7 +15,7 @@ namespace chatterino { struct Message; using MessagePtr = std::shared_ptr; -enum class MessageFlag : uint16_t; +enum class MessageFlag : uint32_t; using MessageFlags = FlagsEnum; class Channel : public std::enable_shared_from_this diff --git a/src/controllers/commands/CommandController.cpp b/src/controllers/commands/CommandController.cpp index 5767c66b..d7ea1693 100644 --- a/src/controllers/commands/CommandController.cpp +++ b/src/controllers/commands/CommandController.cpp @@ -208,6 +208,7 @@ QString CommandController::execCommand(const QString &textNoEmoji, } b->flags.set(MessageFlag::DoNotTriggerNotification); + b->flags.set(MessageFlag::Whisper); auto messagexD = b.release(); app->twitch.server->whispersChannel->addMessage(messagexD); diff --git a/src/messages/Message.hpp b/src/messages/Message.hpp index c8efc73d..cdbb2a8d 100644 --- a/src/messages/Message.hpp +++ b/src/messages/Message.hpp @@ -12,7 +12,7 @@ namespace chatterino { class MessageElement; -enum class MessageFlag : uint16_t { +enum class MessageFlag : uint32_t { None = 0, System = (1 << 0), Timeout = (1 << 1), @@ -30,6 +30,7 @@ enum class MessageFlag : uint16_t { DoNotLog = (1 << 13), AutoMod = (1 << 14), RecentMessage = (1 << 15), + Whisper = (1 << 16) }; using MessageFlags = FlagsEnum; diff --git a/src/messages/layouts/MessageLayoutContainer.hpp b/src/messages/layouts/MessageLayoutContainer.hpp index e248038a..112f2bb3 100644 --- a/src/messages/layouts/MessageLayoutContainer.hpp +++ b/src/messages/layouts/MessageLayoutContainer.hpp @@ -14,7 +14,7 @@ class QPainter; namespace chatterino { -enum class MessageFlag : uint16_t; +enum class MessageFlag : uint32_t; using MessageFlags = FlagsEnum; struct Margin { diff --git a/src/providers/twitch/IrcMessageHandler.cpp b/src/providers/twitch/IrcMessageHandler.cpp index d29a9c78..6c9d9b59 100644 --- a/src/providers/twitch/IrcMessageHandler.cpp +++ b/src/providers/twitch/IrcMessageHandler.cpp @@ -321,6 +321,7 @@ void IrcMessageHandler::handleWhisperMessage(Communi::IrcMessage *message) if (!builder.isIgnored()) { + builder->flags.set(MessageFlag::Whisper); MessagePtr _message = builder.build(); app->twitch.server->lastUserThatWhisperedMe.set(builder.userName); diff --git a/src/widgets/helper/ChannelView.hpp b/src/widgets/helper/ChannelView.hpp index 4fa8dd53..70b5fd0b 100644 --- a/src/widgets/helper/ChannelView.hpp +++ b/src/widgets/helper/ChannelView.hpp @@ -25,7 +25,7 @@ using ChannelPtr = std::shared_ptr; struct Message; using MessagePtr = std::shared_ptr; -enum class MessageFlag : uint16_t; +enum class MessageFlag : uint32_t; using MessageFlags = FlagsEnum; class MessageLayout;