49 QObjectPrivate *op = QObjectPrivate::get(object);
50 QDynamicMetaObjectData *parent = op->metaObject;
56 QQmlData *ddata = QQmlData::get(object,
false);
59 ddata->hasVMEMetaObject =
false;
60 ddata->hasInterceptorMetaObject =
false;
140 if ((call == QMetaObject::ReadProperty || call == QMetaObject::WriteProperty)
141 && id >= type()->propertyOffset()) {
142 int propId = id - type()->propertyOffset();
143 if (call == QMetaObject::ReadProperty) {
145 *
reinterpret_cast<QVariant *>(a[0]) = m_data->getData(propId);
146 }
else if (call == QMetaObject::WriteProperty) {
147 if (propId <= m_data->count() || m_data->m_data[propId].first != *
reinterpret_cast<QVariant *>(a[0])) {
149 std::pair<QVariant,
bool> &prop = m_data->getDataRef(propId);
150 prop.first = propertyWriteValue(propId, *
reinterpret_cast<QVariant *>(a[0]));
153 activate(
myObject(), type()->signalOffset() + propId,
nullptr);
158 QDynamicMetaObjectData *dynamicParent = dynamicMetaObjectParent();
160 return dynamicParent->metaCall(o, call, id, a);
170 int metaCallReturnValue = -1;
172 const QMetaProperty propertyById = property(id);
174 if (call == QMetaObject::WriteProperty
175 && propertyById.userType() == QMetaType::QVariant
176 &&
reinterpret_cast<QVariant *>(a[0])->userType() == QMetaType::Double
177 && qt_is_nan(
reinterpret_cast<QVariant *>(a[0])->toDouble())) {
181 if (call == QMetaObject::WriteProperty
182 && propertyById.userType() == QMetaType::Double
183 && qt_is_nan(*
reinterpret_cast<
double*>(a[0]))) {
187 if (call == QMetaObject::WriteProperty
188 && propertyById.userType() == QMetaType::Float
189 && qt_is_nan(*
reinterpret_cast<
float*>(a[0]))) {
195 if (call == QMetaObject::WriteProperty && !propertyById.hasNotifySignal())
200 QDynamicMetaObjectData *dynamicParent = dynamicMetaObjectParent();
201 const QMetaObject *staticParent = dynamicParent
202 ? dynamicParent->toDynamicMetaObject(object())
204 if (staticParent && id < staticParent->propertyOffset())
205 metaCallReturnValue = dynamicParent->metaCall(o, call, id, a);
207 openMetaCall(o, call, id, a);
210 if (call == QMetaObject::WriteProperty
211 && !propertyById.hasNotifySignal()
212 && oldValue != propertyById.read(myObject()))
215 return metaCallReturnValue;