diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2012-03-22 10:38:00 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-26 02:55:20 +0200 |
commit | d120c3c383d7db7a7c7f1602ba27f04cebb8abfa (patch) | |
tree | 1c39dcfbc3f92754b396afa9ac142cb5b471f5fd /src/qml/qml/qqmlboundsignal.cpp | |
parent | 6b516a83051727c1ca02a8b400409927ad615ea6 (diff) |
Support registered QFlags in QML methods and signal handlers.
Change-Id: I2a71122303dcf7af4f07c3ffb73456bcdce62a74
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/qml/qml/qqmlboundsignal.cpp')
-rw-r--r-- | src/qml/qml/qqmlboundsignal.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp index 5cc603224a..543b69a1c5 100644 --- a/src/qml/qml/qqmlboundsignal.cpp +++ b/src/qml/qml/qqmlboundsignal.cpp @@ -55,6 +55,8 @@ #include <QtCore/qstringbuilder.h> #include <QtCore/qdebug.h> +Q_DECLARE_METATYPE(QJSValue) + QT_BEGIN_NAMESPACE class QQmlBoundSignalParameters : public QObject @@ -227,10 +229,14 @@ QQmlBoundSignalParameters::QQmlBoundSignalParameters(const QMetaMethod &method, prop.setWritable(false); } else { QByteArray propType = type; - if ((QMetaType::typeFlags(t) & QMetaType::IsEnumeration) == QMetaType::IsEnumeration) { + QMetaType::TypeFlags flags = QMetaType::typeFlags(t); + if (flags & QMetaType::IsEnumeration) { t = QVariant::Int; propType = "int"; - } else if (t == QVariant::Invalid) { + } else if (t == QVariant::Invalid || + (t >= QVariant::UserType && !(flags & QMetaType::PointerToQObject) && + t != qMetaTypeId<QJSValue>())) { + //the UserType clause is to catch registered QFlags QByteArray scope; QByteArray name; int scopeIdx = propType.lastIndexOf("::"); |