diff --git a/CMakeLists.txt b/CMakeLists.txt index d104c9a5..54619f2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.24) project(Spix LANGUAGES CXX) option(SPIX_BUILD_EXAMPLES "Build Spix examples." ON) @@ -12,6 +12,9 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) +# Treat warnings as errors +set(CMAKE_COMPILE_WARNING_AS_ERROR ON) + add_subdirectory(lib) if(SPIX_BUILD_EXAMPLES) diff --git a/lib/src/Scene/Mock/MockScene.h b/lib/src/Scene/Mock/MockScene.h index 8a9b7574..d91f28a6 100644 --- a/lib/src/Scene/Mock/MockScene.h +++ b/lib/src/Scene/Mock/MockScene.h @@ -25,7 +25,7 @@ class SPIX_EXPORT MockScene : public Scene { // Tasks void takeScreenshot(const ItemPath& targetItem, const std::string& filePath) override; - std::string takeScreenshotAsBase64(const ItemPath& targetItem); + std::string takeScreenshotAsBase64(const ItemPath& targetItem) override; // Mock stuff void addItemAtPath(MockItem item, const ItemPath& path); MockEvents& mockEvents(); diff --git a/lib/src/Scene/Qt/QtEvents.cpp b/lib/src/Scene/Qt/QtEvents.cpp index 449b901f..e18173b5 100644 --- a/lib/src/Scene/Qt/QtEvents.cpp +++ b/lib/src/Scene/Qt/QtEvents.cpp @@ -103,7 +103,7 @@ void QtEvents::mouseDown(Item* item, Point loc, MouseButton button) Qt::MouseButtons activeButtons = getQtMouseButtonValue(m_pressedMouseButtons); QMouseEvent* event - = new QMouseEvent(QEvent::MouseButtonPress, windowLoc, eventCausingButton, activeButtons, Qt::NoModifier); + = new QMouseEvent(QEvent::MouseButtonPress, windowLoc, windowLoc, eventCausingButton, activeButtons, Qt::NoModifier); QGuiApplication::postEvent(window, event); } @@ -127,7 +127,7 @@ void QtEvents::mouseUp(Item* item, Point loc, MouseButton button) #endif QMouseEvent* event - = new QMouseEvent(QEvent::MouseButtonRelease, windowLoc, eventCausingButton, activeButtons, Qt::NoModifier); + = new QMouseEvent(QEvent::MouseButtonRelease, windowLoc, windowLoc, eventCausingButton, activeButtons, Qt::NoModifier); QGuiApplication::postEvent(window, event); } @@ -143,13 +143,13 @@ void QtEvents::mouseMove(Item* item, Point loc) // Wiggle the cursor a bit. This is needed to correctly recognize drag events windowLoc.rx() -= 1; QMouseEvent* mouseMoveEvent - = new QMouseEvent(QEvent::MouseMove, windowLoc, Qt::MouseButton::NoButton, activeButtons, Qt::NoModifier); + = new QMouseEvent(QEvent::MouseMove, windowLoc, windowLoc, Qt::MouseButton::NoButton, activeButtons, Qt::NoModifier); QGuiApplication::postEvent(window, mouseMoveEvent); // Wiggle the cursor a bit. This is needed to correctly recognize drag events windowLoc.rx() += 1; mouseMoveEvent - = new QMouseEvent(QEvent::MouseMove, windowLoc, Qt::MouseButton::NoButton, activeButtons, Qt::NoModifier); + = new QMouseEvent(QEvent::MouseMove, windowLoc, windowLoc, Qt::MouseButton::NoButton, activeButtons, Qt::NoModifier); QGuiApplication::postEvent(window, mouseMoveEvent); } diff --git a/lib/src/Scene/Qt/QtItemTools.cpp b/lib/src/Scene/Qt/QtItemTools.cpp index a1bf8b0f..6022d718 100644 --- a/lib/src/Scene/Qt/QtItemTools.cpp +++ b/lib/src/Scene/Qt/QtItemTools.cpp @@ -205,7 +205,7 @@ Variant QVariantToVariant(const QVariant& var) return QVariantToVariant(jsval.toVariant()); } - if (var.canConvert(QMetaType::Type::QVariantList)) { + if (var.canConvert(QMetaType(QMetaType::QVariantList))) { const QVariantList& list = var.toList(); Variant::ListType ret; for (const QVariant& elem : list) { @@ -215,7 +215,7 @@ Variant QVariantToVariant(const QVariant& var) return Variant(ret); } - if (var.canConvert(QMetaType::Type::QVariantMap)) { + if (var.canConvert(QMetaType(QMetaType::QVariantMap))) { const QVariantMap& map = var.toMap(); Variant::MapType ret; for (auto ptr = map.constBegin(); ptr != map.constEnd(); ptr++) { @@ -225,7 +225,7 @@ Variant QVariantToVariant(const QVariant& var) return Variant(ret); } - if (var.canConvert(QMetaType::Type::QString)) { + if (var.canConvert(QMetaType(QMetaType::QString))) { return Variant(var.toString().toStdString()); } @@ -264,7 +264,7 @@ bool CanConvertArgTypes(const QMetaMethod& metaMethod, const std::vector ConvertAndCreateQArgumentsForMethod( if (i < varargs.size()) { int targetType = metaMethod.parameterType(i); if (targetType != QMetaType::Type::QVariant) { - varargs[i].convert(targetType); + varargs[i].convert(QMetaType(targetType)); qtArgs.push_back(QGenericArgument(varargs[i].typeName(), varargs[i].data())); } else { qtArgs.push_back(QArgument("QVariant", varargs[i])); diff --git a/lib/src/Scene/Qt/QtScene.h b/lib/src/Scene/Qt/QtScene.h index 18978451..b724d309 100644 --- a/lib/src/Scene/Qt/QtScene.h +++ b/lib/src/Scene/Qt/QtScene.h @@ -29,7 +29,7 @@ class QtScene : public Scene { // Tasks void takeScreenshot(const ItemPath& targetItem, const std::string& filePath) override; - std::string takeScreenshotAsBase64(const ItemPath& targetItem); + std::string takeScreenshotAsBase64(const ItemPath& targetItem) override; private: QtEvents m_events; diff --git a/lib/tests/unittests/Scene/Qt/QtItemTools_test.cpp b/lib/tests/unittests/Scene/Qt/QtItemTools_test.cpp index 0aeda05a..0c956899 100644 --- a/lib/tests/unittests/Scene/Qt/QtItemTools_test.cpp +++ b/lib/tests/unittests/Scene/Qt/QtItemTools_test.cpp @@ -26,14 +26,14 @@ TEST(QtItemToolsTest, NullToQVariant) TEST(QtItemToolsTest, BoolToQVariant) { auto qvar = spix::qt::VariantToQVariant(Variant(true)); - EXPECT_EQ(qvar.type(), QMetaType::Type::Bool); + EXPECT_EQ(qvar.userType(), QMetaType::Type::Bool); EXPECT_TRUE(qvar.toBool()); } TEST(QtItemToolsTest, NumberToQVariant) { auto qvar = spix::qt::VariantToQVariant(Variant(-137LL)); - EXPECT_EQ(qvar.type(), QMetaType::Type::LongLong); + EXPECT_EQ(qvar.userType(), QMetaType::Type::LongLong); EXPECT_EQ(qvar.toLongLong(), -137); } @@ -41,28 +41,28 @@ TEST(QtItemToolsTest, LongNumberToQVariant) { auto number = std::numeric_limits::max(); auto qvar = spix::qt::VariantToQVariant(Variant(number)); - EXPECT_EQ(qvar.type(), QMetaType::Type::LongLong); + EXPECT_EQ(qvar.userType(), QMetaType::Type::LongLong); EXPECT_EQ(qvar.toLongLong(), number); } TEST(QtItemToolsTest, FloatNumberToQVariant) { auto qvar = spix::qt::VariantToQVariant(Variant(2.1)); - EXPECT_EQ(qvar.type(), QMetaType::Type::Double); + EXPECT_EQ(qvar.userType(), QMetaType::Type::Double); EXPECT_EQ(qvar.toDouble(), 2.1); } TEST(QtItemToolsTest, StringToQVariant) { auto qvar = spix::qt::VariantToQVariant(Variant(std::string("hello strings!"))); - EXPECT_EQ(qvar.type(), QMetaType::Type::QString); + EXPECT_EQ(qvar.userType(), QMetaType::Type::QString); EXPECT_EQ(qvar.toString(), "hello strings!"); } TEST(QtItemToolsTest, UnicodeToQVariant) { auto qvar = spix::qt::VariantToQVariant(Variant(std::string(u8"☀☁☂☃☄★☆☇"))); - EXPECT_EQ(qvar.type(), QMetaType::Type::QString); + EXPECT_EQ(qvar.userType(), QMetaType::Type::QString); EXPECT_EQ(qvar.toString(), u8"☀☁☂☃☄★☆☇"); } @@ -70,7 +70,7 @@ TEST(QtItemToolsTest, DateToQVariant) { auto var = Variant(std::chrono::system_clock::from_time_t(1651775070)); auto qvar = spix::qt::VariantToQVariant(var); - EXPECT_EQ(qvar.type(), QMetaType::Type::QDateTime); + EXPECT_EQ(qvar.userType(), QMetaType::Type::QDateTime); EXPECT_EQ(qvar.toDateTime(), QDateTime::fromSecsSinceEpoch(1651775070)); } @@ -80,14 +80,14 @@ TEST(QtItemToolsTest, ListToQVariant) auto var = Variant(list); auto qvar = spix::qt::VariantToQVariant(var); - EXPECT_EQ(qvar.type(), QMetaType::Type::QVariantList); + EXPECT_EQ(qvar.userType(), QMetaType::Type::QVariantList); auto qlist = qvar.toList(); EXPECT_EQ(qlist.size(), 3); - EXPECT_EQ(qlist[0].type(), QMetaType::Type::Bool); + EXPECT_EQ(qlist[0].userType(), QMetaType::Type::Bool); EXPECT_TRUE(qlist[0].toBool()); - EXPECT_EQ(qlist[1].type(), QMetaType::Type::LongLong); + EXPECT_EQ(qlist[1].userType(), QMetaType::Type::LongLong); EXPECT_EQ(qlist[1].toLongLong(), 137); - EXPECT_EQ(qlist[2].type(), QMetaType::Type::QString); + EXPECT_EQ(qlist[2].userType(), QMetaType::Type::QString); EXPECT_EQ(qlist[2].toString(), "hello strings!"); } @@ -98,14 +98,14 @@ TEST(QtItemToolsTest, MapToQVariant) auto var = Variant(map); auto qvar = spix::qt::VariantToQVariant(var); - EXPECT_EQ(qvar.type(), QMetaType::Type::QVariantMap); + EXPECT_EQ(qvar.userType(), QMetaType::Type::QVariantMap); auto qmap = qvar.toMap(); EXPECT_EQ(qmap.size(), 3); - EXPECT_EQ(qmap["key0"].type(), QMetaType::Type::Bool); + EXPECT_EQ(qmap["key0"].userType(), QMetaType::Type::Bool); EXPECT_TRUE(qmap["key0"].toBool()); - EXPECT_EQ(qmap["key1"].type(), QMetaType::Type::LongLong); + EXPECT_EQ(qmap["key1"].userType(), QMetaType::Type::LongLong); EXPECT_EQ(qmap["key1"].toLongLong(), 137); - EXPECT_EQ(qmap["key2"].type(), QMetaType::Type::QString); + EXPECT_EQ(qmap["key2"].userType(), QMetaType::Type::QString); EXPECT_EQ(qmap["key2"].toString(), "hello strings!"); } @@ -116,18 +116,18 @@ TEST(QtItemToolsTest, MapOfListToQVariant) auto var = Variant(map); auto qvar = spix::qt::VariantToQVariant(var); - EXPECT_EQ(qvar.type(), QMetaType::Type::QVariantMap); + EXPECT_EQ(qvar.userType(), QMetaType::Type::QVariantMap); auto qmap = qvar.toMap(); EXPECT_EQ(qmap.size(), 1); auto qinner = qmap["key0"]; - EXPECT_EQ(qinner.type(), QMetaType::Type::QVariantList); + EXPECT_EQ(qinner.userType(), QMetaType::Type::QVariantList); auto qinnerlist = qinner.toList(); EXPECT_EQ(qinnerlist.size(), 3); - EXPECT_EQ(qinnerlist[0].type(), QMetaType::Type::Bool); + EXPECT_EQ(qinnerlist[0].userType(), QMetaType::Type::Bool); EXPECT_TRUE(qinnerlist[0].toBool()); - EXPECT_EQ(qinnerlist[1].type(), QMetaType::Type::LongLong); + EXPECT_EQ(qinnerlist[1].userType(), QMetaType::Type::LongLong); EXPECT_EQ(qinnerlist[1].toLongLong(), 137); - EXPECT_EQ(qinnerlist[2].type(), QMetaType::Type::QString); + EXPECT_EQ(qinnerlist[2].userType(), QMetaType::Type::QString); EXPECT_EQ(qinnerlist[2].toString(), "hello strings!"); } @@ -208,7 +208,7 @@ TEST_F(QtItemToolsTestWithQMLEngine, TestFixture) QQuickItem* element = this->GetQQuickItemWithMethod("function test() { return 147; }"); QVariant ret; EXPECT_TRUE(QMetaObject::invokeMethod(element, "test", Q_RETURN_ARG(QVariant, ret))); - EXPECT_EQ(ret.type(), QMetaType::Type::Int); + EXPECT_EQ(ret.userType(), QMetaType::Type::Int); EXPECT_EQ(ret.toInt(), 147); } diff --git a/lib/tests/unittests/Scene/Qt/QtItem_test.cpp b/lib/tests/unittests/Scene/Qt/QtItem_test.cpp index fd667363..cfd09551 100644 --- a/lib/tests/unittests/Scene/Qt/QtItem_test.cpp +++ b/lib/tests/unittests/Scene/Qt/QtItem_test.cpp @@ -31,7 +31,7 @@ TEST_F(QtItemTestWithQMLEngine, TestFixture) EXPECT_TRUE(QMetaObject::invokeMethod(obj, "test", Q_ARG(int, 3))); EXPECT_EQ(spy->count(), 1); EXPECT_EQ((*spy)[0].count(), 1); - EXPECT_EQ((*spy)[0][0].type(), QMetaType::Int); + EXPECT_EQ((*spy)[0][0].userType(), QMetaType::Int); EXPECT_EQ((*spy)[0][0].toInt(), 3); }