Fixed wrong offset in property invokation

This commit is contained in:
Filippo Cucchetto 2016-01-13 20:21:05 +01:00
parent ed7be34536
commit a9c95abd57
1 changed files with 6 additions and 6 deletions

View File

@ -64,7 +64,7 @@ std::shared_ptr<const IDosQMetaObject> DosQObjectImpl::dosMetaObject() const
bool DosQObjectImpl::executeSlot(int index, void **args) bool DosQObjectImpl::executeSlot(int index, void **args)
{ {
const QMetaMethod method = this->method(index); const QMetaMethod method = this->method(methodOffset() + index);
if (!method.isValid()) { if (!method.isValid()) {
qDebug() << "C++: executeSlot: invalid method"; qDebug() << "C++: executeSlot: invalid method";
return false; return false;
@ -85,7 +85,7 @@ bool DosQObjectImpl::executeSlot(const QMetaMethod &method, void **args)
arguments.emplace_back(std::move(argument)); arguments.emplace_back(std::move(argument));
} }
QVariant result = m_onSlotExecuted(method.name(), arguments); // Execute method const QVariant result = m_onSlotExecuted(method.name(), arguments); // Execute method
if (hasReturnType && result.isValid()) { if (hasReturnType && result.isValid()) {
QMetaType::construct(method.returnType(), args[0], result.constData()); QMetaType::construct(method.returnType(), args[0], result.constData());
@ -96,10 +96,10 @@ bool DosQObjectImpl::executeSlot(const QMetaMethod &method, void **args)
bool DosQObjectImpl::readProperty(int index, void **args) bool DosQObjectImpl::readProperty(int index, void **args)
{ {
const QMetaProperty property = this->property(index); const QMetaProperty property = this->property(propertyOffset() + index);
if (!property.isValid() || !property.isReadable()) if (!property.isValid() || !property.isReadable())
return false; return false;
QMetaMethod method = dosMetaObject()->readSlot(property.name()); const QMetaMethod method = dosMetaObject()->readSlot(property.name());
if (!method.isValid()) { if (!method.isValid()) {
qDebug() << "C++: readProperty: invalid read method for property " << property.name(); qDebug() << "C++: readProperty: invalid read method for property " << property.name();
return false; return false;
@ -109,10 +109,10 @@ bool DosQObjectImpl::readProperty(int index, void **args)
bool DosQObjectImpl::writeProperty(int index, void **args) bool DosQObjectImpl::writeProperty(int index, void **args)
{ {
const QMetaProperty property = this->property(index); const QMetaProperty property = this->property(propertyOffset() + index);
if (!property.isValid() || !property.isWritable()) if (!property.isValid() || !property.isWritable())
return false; return false;
QMetaMethod method = dosMetaObject()->writeSlot(property.name()); const QMetaMethod method = dosMetaObject()->writeSlot(property.name());
if (!method.isValid()) { if (!method.isValid()) {
qDebug() << "C++: writeProperty: invalid write method for property " << property.name(); qDebug() << "C++: writeProperty: invalid write method for property " << property.name();
return false; return false;