48 QObjectPrivate *op = QObjectPrivate::get(object);
49 QDynamicMetaObjectData *parent = op->metaObject;
55 QQmlData *ddata = QQmlData::get(object,
false);
58 ddata->hasVMEMetaObject =
false;
59 ddata->hasInterceptorMetaObject =
false;
139 if ((call == QMetaObject::ReadProperty || call == QMetaObject::WriteProperty)
140 && id >= type()->propertyOffset()) {
141 int propId = id - type()->propertyOffset();
142 if (call == QMetaObject::ReadProperty) {
144 *
reinterpret_cast<QVariant *>(a[0]) = m_data->getData(propId);
145 }
else if (call == QMetaObject::WriteProperty) {
146 if (propId <= m_data->count() || m_data->m_data[propId].first != *
reinterpret_cast<QVariant *>(a[0])) {
148 std::pair<QVariant,
bool> &prop = m_data->getDataRef(propId);
149 prop.first = propertyWriteValue(propId, *
reinterpret_cast<QVariant *>(a[0]));
152 activate(
myObject(), type()->signalOffset() + propId,
nullptr);
157 QDynamicMetaObjectData *dynamicParent = dynamicMetaObjectParent();
159 return dynamicParent->metaCall(o, call, id, a);
169 int metaCallReturnValue = -1;
171 const QMetaProperty propertyById = property(id);
173 if (call == QMetaObject::WriteProperty
174 && propertyById.userType() == QMetaType::QVariant
175 &&
reinterpret_cast<QVariant *>(a[0])->userType() == QMetaType::Double
176 && qt_is_nan(
reinterpret_cast<QVariant *>(a[0])->toDouble())) {
180 if (call == QMetaObject::WriteProperty
181 && propertyById.userType() == QMetaType::Double
182 && qt_is_nan(*
reinterpret_cast<
double*>(a[0]))) {
186 if (call == QMetaObject::WriteProperty
187 && propertyById.userType() == QMetaType::Float
188 && qt_is_nan(*
reinterpret_cast<
float*>(a[0]))) {
194 if (call == QMetaObject::WriteProperty && !propertyById.hasNotifySignal())
199 QDynamicMetaObjectData *dynamicParent = dynamicMetaObjectParent();
200 const QMetaObject *staticParent = dynamicParent
201 ? dynamicParent->toDynamicMetaObject(object())
203 if (staticParent && id < staticParent->propertyOffset())
204 metaCallReturnValue = dynamicParent->metaCall(o, call, id, a);
206 openMetaCall(o, call, id, a);
209 if (call == QMetaObject::WriteProperty
210 && !propertyById.hasNotifySignal()
211 && oldValue != propertyById.read(myObject()))
214 return metaCallReturnValue;