Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove direct dependency on Qt 5 compatibility module #4906

Merged
merged 2 commits into from
Oct 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
7 changes: 0 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
7 changes: 0 additions & 7 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 0 additions & 1 deletion src/providers/twitch/TwitchMessageBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
#include <boost/variant.hpp>
#include <QColor>
#include <QDebug>
#include <QStringRef>

#include <chrono>
#include <unordered_set>
Expand Down
29 changes: 16 additions & 13 deletions src/util/Helpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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())
{
Expand All @@ -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<uint64_t, bool> findUnitMultiplierToSec(const QStringRef &view,
int &pos)
std::pair<uint64_t, bool> 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);
Expand Down Expand Up @@ -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);

Expand Down
20 changes: 15 additions & 5 deletions src/util/Helpers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
#include <QColor>
#include <QLocale>
#include <QString>
#include <QStringRef>

#if QT_VERSION < QT_VERSION_CHECK(5, 15, 2)
# include <QStringRef>
#endif

#include <cmath>
#include <optional>
Expand All @@ -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().
Expand All @@ -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).
Expand All @@ -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
Expand All @@ -48,8 +58,8 @@ namespace _helpers_internal {
* if it's a valid unit, undefined otherwise.
* @return (multiplier, ok)
*/
std::pair<uint64_t, bool> findUnitMultiplierToSec(const QStringRef &view,
int &pos);
std::pair<uint64_t, bool> findUnitMultiplierToSec(StringView view,
SizeType &pos);

} // namespace _helpers_internal

Expand Down
20 changes: 13 additions & 7 deletions tests/src/Helpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<TestCase> tests{{"foo bar", 3, 6}, {"foo bar", 3, 3},
Expand All @@ -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)
Expand All @@ -286,8 +292,8 @@ TEST(Helpers, findUnitMultiplierToSec)

struct TestCase {
QString input;
int startPos;
int expectedEndPos;
SizeType startPos;
SizeType expectedEndPos;
uint64_t expectedMultiplier;
};

Expand Down Expand Up @@ -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)
{
Expand Down