diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a4874d95..62d908ee6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ - Dev: Update vcpkg to use Qt6. (#4872) - Dev: Replace `boost::optional` with `std::optional`. (#4877) - Dev: Improve performance by reducing repaints caused by selections. (#4889) +- Dev: Removed direct dependency on Qt 5 compatibility module. (#4906) ## 2.4.6 diff --git a/CMakeLists.txt b/CMakeLists.txt index 80ded410e..58ffbffb3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,13 +110,6 @@ find_package(Qt${MAJOR_QT_VERSION} REQUIRED Concurrent ) -if (BUILD_WITH_QT6) - find_package(Qt${MAJOR_QT_VERSION} REQUIRED - COMPONENTS - Core5Compat - ) -endif () - message(STATUS "Qt version: ${Qt${MAJOR_QT_VERSION}_VERSION}") if (WIN32) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7bfaeeb1d..6ed4bf4c7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -712,13 +712,6 @@ if (CHATTERINO_PLUGINS) target_link_libraries(${LIBRARY_PROJECT} PUBLIC lua) endif() -if (BUILD_WITH_QT6) - target_link_libraries(${LIBRARY_PROJECT} - PUBLIC - Qt${MAJOR_QT_VERSION}::Core5Compat - ) -endif () - if (BUILD_WITH_QTKEYCHAIN) target_link_libraries(${LIBRARY_PROJECT} PUBLIC diff --git a/src/providers/twitch/TwitchMessageBuilder.cpp b/src/providers/twitch/TwitchMessageBuilder.cpp index 7322f3caa..efb545848 100644 --- a/src/providers/twitch/TwitchMessageBuilder.cpp +++ b/src/providers/twitch/TwitchMessageBuilder.cpp @@ -39,7 +39,6 @@ #include #include #include -#include #include #include diff --git a/src/util/Helpers.cpp b/src/util/Helpers.cpp index 1329c3cda..f81ac9b79 100644 --- a/src/util/Helpers.cpp +++ b/src/util/Helpers.cpp @@ -11,7 +11,7 @@ namespace chatterino { namespace _helpers_internal { - int skipSpace(const QStringRef &view, int startPos) + SizeType skipSpace(StringView view, SizeType startPos) { while (startPos < view.length() && view.at(startPos).isSpace()) { @@ -20,26 +20,26 @@ namespace _helpers_internal { return startPos - 1; } - bool matchesIgnorePlural(const QStringRef &word, const QString &singular) + bool matchesIgnorePlural(StringView word, const QString &expected) { - if (!word.startsWith(singular)) + if (!word.startsWith(expected)) { return false; } - if (word.length() == singular.length()) + if (word.length() == expected.length()) { return true; } - return word.length() == singular.length() + 1 && + return word.length() == expected.length() + 1 && word.at(word.length() - 1).toLatin1() == 's'; } - std::pair findUnitMultiplierToSec(const QStringRef &view, - int &pos) + std::pair findUnitMultiplierToSec(StringView view, + SizeType &pos) { // Step 1. find end of unit - int startIdx = pos; - int endIdx = view.length(); + auto startIdx = pos; + auto endIdx = view.length(); for (; pos < view.length(); pos++) { auto c = view.at(pos); @@ -207,16 +207,19 @@ int64_t parseDurationToSeconds(const QString &inputString, return -1; } - // TODO(QT6): use QStringView - QStringRef input(&inputString); +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 2) + StringView input(inputString); +#else + StringView input(&inputString); +#endif input = input.trimmed(); uint64_t currentValue = 0; bool visitingNumber = true; // input must start with a number - int numberStartIdx = 0; + SizeType numberStartIdx = 0; - for (int pos = 0; pos < input.length(); pos++) + for (SizeType pos = 0; pos < input.length(); pos++) { QChar c = input.at(pos); diff --git a/src/util/Helpers.hpp b/src/util/Helpers.hpp index 51154db5d..56e25082a 100644 --- a/src/util/Helpers.hpp +++ b/src/util/Helpers.hpp @@ -3,7 +3,10 @@ #include #include #include -#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 15, 2) +# include +#endif #include #include @@ -14,6 +17,13 @@ namespace chatterino { // only qualified for tests namespace _helpers_internal { +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 2) + using StringView = QStringView; +#else + using StringView = QStringRef; +#endif + using SizeType = StringView::size_type; + /** * Skips all spaces. * The caller must guarantee view.at(startPos).isSpace(). @@ -22,7 +32,7 @@ namespace _helpers_internal { * @param startPos The starting position (there must be a space in the view). * @return The position of the last space. */ - int skipSpace(const QStringRef &view, int startPos); + SizeType skipSpace(StringView view, SizeType startPos); /** * Checks if `word` equals `expected` (singular) or `expected` + 's' (plural). @@ -31,7 +41,7 @@ namespace _helpers_internal { * @param expected Singular of the expected word. * @return true if `word` is singular or plural of `expected`. */ - bool matchesIgnorePlural(const QStringRef &word, const QString &expected); + bool matchesIgnorePlural(StringView word, const QString &expected); /** * Tries to find the unit starting at `pos` and returns its multiplier so @@ -48,8 +58,8 @@ namespace _helpers_internal { * if it's a valid unit, undefined otherwise. * @return (multiplier, ok) */ - std::pair findUnitMultiplierToSec(const QStringRef &view, - int &pos); + std::pair findUnitMultiplierToSec(StringView view, + SizeType &pos); } // namespace _helpers_internal diff --git a/tests/src/Helpers.cpp b/tests/src/Helpers.cpp index df987f9d5..d6a74fec0 100644 --- a/tests/src/Helpers.cpp +++ b/tests/src/Helpers.cpp @@ -252,12 +252,18 @@ TEST(Helpers, BatchDifferentInputType) EXPECT_EQ(result, expectation); } +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 2) +# define makeView(x) x +#else +# define makeView(str) (&(str)) +#endif + TEST(Helpers, skipSpace) { struct TestCase { QString input; - int startIdx; - int expected; + SizeType startIdx; + SizeType expected; }; std::vector tests{{"foo bar", 3, 6}, {"foo bar", 3, 3}, @@ -266,7 +272,7 @@ TEST(Helpers, skipSpace) for (const auto &c : tests) { - const auto actual = skipSpace(&c.input, c.startIdx); + const auto actual = skipSpace(makeView(c.input), c.startIdx); EXPECT_EQ(actual, c.expected) << actual << " (" << qUtf8Printable(c.input) @@ -286,8 +292,8 @@ TEST(Helpers, findUnitMultiplierToSec) struct TestCase { QString input; - int startPos; - int expectedEndPos; + SizeType startPos; + SizeType expectedEndPos; uint64_t expectedMultiplier; }; @@ -407,8 +413,8 @@ TEST(Helpers, findUnitMultiplierToSec) for (const auto &c : tests) { - int pos = c.startPos; - const auto actual = findUnitMultiplierToSec(&c.input, pos); + SizeType pos = c.startPos; + const auto actual = findUnitMultiplierToSec(makeView(c.input), pos); if (c.expectedMultiplier == bad) {