summaryrefslogtreecommitdiffstats
path: root/src/remoteobjects/qremoteobjectpacket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/remoteobjects/qremoteobjectpacket.cpp')
-rw-r--r--src/remoteobjects/qremoteobjectpacket.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/remoteobjects/qremoteobjectpacket.cpp b/src/remoteobjects/qremoteobjectpacket.cpp
index ecf593c..a751824 100644
--- a/src/remoteobjects/qremoteobjectpacket.cpp
+++ b/src/remoteobjects/qremoteobjectpacket.cpp
@@ -39,6 +39,8 @@
#include "qremoteobjectpacket_p.h"
+#include <QAbstractItemModel>
+
#include "qremoteobjectpendingcall.h"
#include "qremoteobjectsource.h"
#include "qremoteobjectsource_p.h"
@@ -404,10 +406,24 @@ void serializePongPacket(DataStreamPacket &ds, const QString &name)
ds.finishPacket();
}
+static ObjectType objectType(const QString &typeName)
+{
+ if (typeName == QLatin1String("QAbstractItemModelAdapter"))
+ return ObjectType::MODEL;
+ auto tid = QMetaType::type(typeName.toUtf8());
+ if (tid == QMetaType::UnknownType)
+ return ObjectType::CLASS;
+ QMetaType type(tid);
+ auto mo = type.metaObject();
+ if (mo && mo->inherits(&QAbstractItemModel::staticMetaObject))
+ return ObjectType::MODEL;
+ return ObjectType::CLASS;
+}
+
QRO_::QRO_(QRemoteObjectSourceBase *source)
: name(source->name())
, typeName(source->m_api->typeName())
- , type(source->m_adapter ? ObjectType::MODEL : ObjectType::CLASS)
+ , type(source->m_adapter ? ObjectType::MODEL : objectType(typeName))
, isNull(source->m_object == nullptr)
, classDefinition()
{}