fix: Qt 6.4.3 build (#6032)

Also enables Qt 6.4.3 build in CI
This commit is contained in:
pajlada
2025-03-06 13:08:06 +01:00
committed by GitHub
parent 72369b1611
commit 01cf8c281d
9 changed files with 91 additions and 49 deletions
+1 -1
View File
@@ -24,7 +24,7 @@ jobs:
strategy:
matrix:
os: [macos-14]
qt-version: [6.7.1]
qt-version: [6.4.3, 6.7.1]
plugins: [true]
fail-fast: false
env:
+1
View File
@@ -55,6 +55,7 @@
- Dev: Fixed duplicate CMake configure in clean builds. (#5940)
- Dev: BTTV emotes are now loaded as WEBP. (#5957)
- Dev: Reduced time we wait for PubSub connections to cleanly exit from 1s to 100ms. (#6019)
- Dev: Build with Qt 6.4.3 in CI. (#6032)
- Dev: Refactored some settings styles/APIs. (#6023)
- Dev: Added snapshot tests for EventSub. (#5965)
- Dev: Updated crashpad. (#6026)
@@ -1,11 +1,13 @@
#include <gtest/gtest.h>
#include <QString>
#include <QStringBuilder>
#include <twitch-eventsub-ws/string.hpp>
#include <type_traits>
namespace {
constexpr const char *MINI = "mini";
constexpr const char *LONGEST_SSO = "mylongstringyesitslongwo";
constexpr const char *TOO_LONG = "mylongstringyesitslongwow";
@@ -567,3 +569,18 @@ TEST(String, Equals)
ASSERT_TRUE(reallyLong == String(REALLY_LONG));
ASSERT_TRUE(reallyLongQt == String(REALLY_LONG));
}
TEST(String, QStringBuilder)
{
String s(MINI);
ASSERT_EQ("foo" % s.qt() % "bar", "foominibar");
ASSERT_EQ(u"foo" % s.qt() % "bar", "foominibar");
ASSERT_EQ("foo" % s.qt() % u"bar", "foominibar");
ASSERT_EQ(u"foo" % s.qt() % u"bar", "foominibar");
// the code below breaks on qt 6.4.3, but i think it's unrelated to our String stuff
// auto text2 = u"a" % s.qt() % u"b";
// QString messageText = text2;
// QString searchText = text2;
}
+2 -2
View File
@@ -658,12 +658,12 @@ MessageBuilder::MessageBuilder(TimeoutMessageTag, const QString &timeoutUser,
->setLink({Link::UserInfo, name});
if (remainder.startsWith(' '))
{
remainder.removeFirst();
removeFirstQS(remainder);
}
else
{
assert(messageText.endsWith(' '));
messageText.removeLast();
removeLastQS(messageText);
el->setTrailingSpace(false);
}
}
@@ -10,6 +10,8 @@
#include "singletons/StreamerMode.hpp"
#include "util/Helpers.hpp"
#include <QStringBuilder>
namespace {
using namespace chatterino;
@@ -35,8 +37,7 @@ void makeModeMessage(EventSubMessageBuilder &builder,
builder.emplaceSystemTextAndUpdate(duration, text);
}
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(text);
}
QString stringifyAutomodReason(const lib::automod::AutomodReason &reason,
@@ -174,6 +175,15 @@ void EventSubMessageBuilder::appendUser(const lib::String &userName,
}
}
void EventSubMessageBuilder::setMessageAndSearchText(const QString &text)
{
assert(this->message().messageText.isNull());
assert(this->message().searchText.isNull());
this->message().messageText = text;
this->message().searchText = text;
}
void makeModerateMessage(EventSubMessageBuilder &builder,
const lib::payload::channel_moderate::v2::Event &event,
const lib::payload::channel_moderate::v2::Vip &action)
@@ -185,8 +195,7 @@ void makeModerateMessage(EventSubMessageBuilder &builder,
builder.appendUser(action.userName, action.userLogin, text);
builder.emplaceSystemTextAndUpdate("as a VIP of this channel.", text);
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(text);
}
void makeModerateMessage(
@@ -201,8 +210,7 @@ void makeModerateMessage(
builder.appendUser(action.userName, action.userLogin, text);
builder.emplaceSystemTextAndUpdate("as a VIP of this channel.", text);
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(text);
}
void makeModerateMessage(EventSubMessageBuilder &builder,
@@ -240,8 +248,7 @@ void makeModerateMessage(EventSubMessageBuilder &builder,
builder.emplaceSystemTextAndUpdate(reasons.join(", "), text);
}
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(text);
}
void makeModerateMessage(EventSubMessageBuilder &builder,
@@ -272,8 +279,7 @@ void makeModerateMessage(EventSubMessageBuilder &builder,
builder.emplaceSystemTextAndUpdate(action.reason.qt(), text);
}
builder->messageText = text;
builder->searchText = text;
builder.setMessageAndSearchText(text);
builder->timeoutUser = action.userLogin.qt();
}
@@ -298,8 +304,7 @@ void makeModerateMessage(
builder.emplaceSystemTextAndUpdate(".", text);
builder->messageText = text;
builder->searchText = text;
builder.setMessageAndSearchText(text);
builder->timeoutUser = action.userLogin.qt();
}
@@ -325,8 +330,7 @@ void makeModerateMessage(
builder.emplaceSystemTextAndUpdate(".", text);
builder->messageText = text;
builder->searchText = text;
builder.setMessageAndSearchText(text);
builder->timeoutUser = action.userLogin.qt();
}
@@ -372,8 +376,7 @@ void makeModerateMessage(
text.append(action.messageBody.qt());
}
builder->messageText = text;
builder->searchText = text;
builder.setMessageAndSearchText(text);
builder->timeoutUser = action.userLogin.qt();
}
@@ -516,8 +519,7 @@ void makeModerateMessage(
}
builder.emplaceSystemTextAndUpdate(u"on AutoMod."_s, text);
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(text);
}
void makeModerateMessage(EventSubMessageBuilder &builder,
@@ -531,8 +533,7 @@ void makeModerateMessage(EventSubMessageBuilder &builder,
builder.appendUser(action.userName, action.userLogin, text, false);
builder.emplaceSystemTextAndUpdate(u"."_s, text);
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(text);
}
void makeModerateMessage(
@@ -547,8 +548,7 @@ void makeModerateMessage(
builder.appendUser(action.userName, action.userLogin, text, false);
builder.emplaceSystemTextAndUpdate(u"."_s, text);
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(text);
}
void makeModerateMessage(EventSubMessageBuilder &builder,
@@ -562,8 +562,7 @@ void makeModerateMessage(EventSubMessageBuilder &builder,
builder.appendUser(action.userName, action.userLogin, text, false);
builder.emplaceSystemTextAndUpdate(".", text);
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(text);
}
void makeModerateMessage(
@@ -578,8 +577,7 @@ void makeModerateMessage(
builder.appendUser(action.userName, action.userLogin, text, false);
builder.emplaceSystemTextAndUpdate(".", text);
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(text);
}
MessagePtr makeAutomodHoldMessageHeader(
@@ -625,11 +623,10 @@ MessagePtr makeAutomodHoldMessageHeader(
MessageColor(QColor(255, 0, 0)),
FontStyle::ChatMediumBold)
->setLink({Link::AutoModDeny, event.messageID.qt()});
auto text = u"AutoMod: Held a message for reason: " % reason %
u". Allow will post "
"it in chat. Allow Deny";
builder->messageText = text;
builder->searchText = text;
builder.setMessageAndSearchText(
u"AutoMod: Held a message for reason: " % reason %
u". Allow will post it in chat. Allow Deny");
return builder.release();
}
@@ -667,9 +664,9 @@ MessagePtr makeAutomodHoldMessageBody(
// XXX: add the structured message here
builder.emplace<TextElement>(event.message.text.qt(),
MessageElementFlag::Text, MessageColor::Text);
auto text = displayName % u": " % event.message.text.qt();
builder->messageText = text;
builder->searchText = text;
builder.setMessageAndSearchText(displayName % u": " %
event.message.text.qt());
return builder.release();
}
@@ -734,8 +731,8 @@ MessagePtr makeSuspiciousUserMessageHeader(
builder.emplace<TextElement>(headerMessage, MessageElementFlag::Text,
MessageColor::Text);
builder->messageText = prefix % u" " % headerMessage;
builder->searchText = prefix % u" " % headerMessage;
builder.setMessageAndSearchText(prefix % u" " % headerMessage);
return builder.release();
}
@@ -776,9 +773,8 @@ MessagePtr makeSuspiciousUserMessageBody(
builder.emplace<TextElement>(event.message.text.qt(),
MessageElementFlag::Text, MessageColor::Text);
auto text = event.userName.qt() % u": " % event.message.text.qt();
builder.message().messageText = text;
builder.message().searchText = text;
builder.setMessageAndSearchText(event.userName.qt() % u": " %
event.message.text.qt());
return builder.release();
}
@@ -821,8 +817,7 @@ MessagePtr makeSuspiciousUserUpdate(
break;
}
builder->messageText = text;
builder->searchText = text;
builder.setMessageAndSearchText(text);
return builder.release();
}
@@ -851,8 +846,7 @@ MessagePtr makeUserMessageHeldMessage(
"Hey! Your message is being checked by mods and has not been sent.",
MessageElementFlag::Text, MessageColor::Text);
builder->messageText = text;
builder->searchText = text;
builder.setMessageAndSearchText(text);
return builder.release();
}
@@ -903,8 +897,7 @@ MessagePtr makeUserMessageUpdateMessage(
break;
}
builder->messageText = text;
builder->searchText = text;
builder.setMessageAndSearchText(text);
return builder.release();
}
@@ -38,6 +38,8 @@ public:
void appendUser(const lib::String &userName, const lib::String &userLogin,
QString &text, bool trailingSpace = true);
void setMessageAndSearchText(const QString &text);
private:
TwitchChannel *channel;
};
@@ -8,6 +8,7 @@
#include "singletons/Settings.hpp"
#include "singletons/WindowManager.hpp"
#include "util/FormatTime.hpp"
#include "util/Helpers.hpp"
#include "util/PostToThread.hpp"
namespace chatterino::eventsub {
@@ -78,7 +79,7 @@ void handleModerateMessage(
}
assert(text.endsWith(' '));
text.removeLast(); // trailing space
removeLastQS(text); // trailing space
if (action.reason.view().empty())
{
+18
View File
@@ -368,4 +368,22 @@ QStringView codepointSlice(QStringView str, qsizetype begin, qsizetype end)
return {sliceBegin, pos};
}
void removeFirstQS(QString &str)
{
#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
str.removeFirst();
#else
str.remove(0, 1);
#endif
}
void removeLastQS(QString &str)
{
#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
str.removeLast();
#else
str.chop(1);
#endif
}
} // namespace chatterino
+10
View File
@@ -208,4 +208,14 @@ QDateTime chronoToQDateTime(std::chrono::system_clock::time_point time);
/// @param end End index (exclusive, in codepoints)
QStringView codepointSlice(QStringView str, qsizetype begin, qsizetype end);
/// Uses str.removeFirst if Qt >= 6.5, otherwise str.remove(0, 1)
///
/// @param str The Qt string we want to remove 1 character from
void removeFirstQS(QString &str);
/// Uses str.removeLast if Qt >= 6.5, otherwise str.chop(1)
///
/// @param str The Qt string we want to remove 1 character from
void removeLastQS(QString &str);
} // namespace chatterino