From 7b29a983fa794291ff8ec7f580d4c03969ebe34b Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Thu, 5 Mar 2015 12:30:58 +0100 Subject: Work around QPersistentModelIndex being a built-in meta-type This is a temporary work-around and will be removed once I63d733d1eb66aa61691e7afce27fe7372a83ac00 is merged in qtbase. Change-Id: I6cfcf1ddc2c9d408c26c171be865d40141de7fa0 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/qml/qml/qqmlvaluetype.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/qml/qml/qqmlvaluetype.cpp b/src/qml/qml/qqmlvaluetype.cpp index 1528ebda37..d3142af75e 100644 --- a/src/qml/qml/qqmlvaluetype.cpp +++ b/src/qml/qml/qqmlvaluetype.cpp @@ -58,6 +58,30 @@ struct QQmlValueTypeFactoryImpl QMutex mutex; }; + +namespace { +// This should be removed once the QPersistentModelIndex as built-in type is merged in qtbase +#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) +#error Please, someone remove this. QPersistentModelIndex should be a built-in meta-type by now. +#else +template ::IsBuiltIn> +struct QPMIConvertersRegistrer { + void registerConverters() + { + } +}; + +template struct QPMIConvertersRegistrer { + void registerConverters() + { + qRegisterMetaType(); + QMetaType::registerConverter(&QQmlModelIndexValueType::toPersistentModelIndex); + QMetaType::registerConverter(&QQmlPersistentModelIndexValueType::toModelIndex); + } +}; +#endif +} + QQmlValueTypeFactoryImpl::QQmlValueTypeFactoryImpl() { for (unsigned int ii = 0; ii < QVariant::UserType; ++ii) @@ -65,11 +89,11 @@ QQmlValueTypeFactoryImpl::QQmlValueTypeFactoryImpl() // See types wrapped in qqmlmodelindexvaluetype_p.h qRegisterMetaType(); - qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); - QMetaType::registerConverter(&QQmlModelIndexValueType::toPersistentModelIndex); - QMetaType::registerConverter(&QQmlPersistentModelIndexValueType::toModelIndex); + + QPMIConvertersRegistrer conv; + conv.registerConverters(); } QQmlValueTypeFactoryImpl::~QQmlValueTypeFactoryImpl() -- cgit v1.2.3