QAbstractDeclarativeData::parentChanged = parentChanged;
QAbstractDeclarativeData::signalEmitted = signalEmitted;
QAbstractDeclarativeData::receivers = receivers;
+ QAbstractDeclarativeData::isSignalConnected = isSignalConnected;
}
}
static void parentChanged(QAbstractDeclarativeData *, QObject *, QObject *);
static void signalEmitted(QAbstractDeclarativeData *, QObject *, int, void **);
static int receivers(QAbstractDeclarativeData *, const QObject *, int);
+ static bool isSignalConnected(QAbstractDeclarativeData *, const QObject *, int);
void destroyed(QObject *);
void parentChanged(QObject *, QObject *);
return static_cast<QQmlData *>(d)->endpointCount(index);
}
+bool QQmlData::isSignalConnected(QAbstractDeclarativeData *d, const QObject *, int index)
+{
+ return static_cast<QQmlData *>(d)->signalHasEndpoint(index);
+}
+
int QQmlData::endpointCount(int index)
{
int count = 0;
}
}
-bool QQml_isSignalConnected(QObject *obj, int signal_index)
-{
- QQmlData *data = QQmlData::get(obj);
- return QObjectPrivate::get(obj)->isSignalConnected(signal_index) || (data && data->signalHasEndpoint(signal_index));
-}
-
/*
index MUST in the range returned by QObjectPrivate::signalIndex()
This is different than the index returned by QMetaMethod::methodIndex()
return 0;
}
-bool Q_QML_PRIVATE_EXPORT QQml_isSignalConnected(QObject*, int);
-
#define IS_SIGNAL_CONNECTED(Sender, SenderType, Name, Arguments) \
do { \
QObject *sender = (Sender); \
void (SenderType::*signal)Arguments = &SenderType::Name; \
static QMetaMethod method = QMetaMethod::fromSignal(signal); \
static int signalIdx = QMetaObjectPrivate::signalIndex(method); \
- return QQml_isSignalConnected(sender, signalIdx); \
+ return QObjectPrivate::get(sender)->isSignalConnected(signalIdx); \
} while (0)
struct QQmlGraphics_DerivedObject : public QObject
{
Q_D(QQuickKeysAttached);
int signal_index = d->signalIndex(signalName);
- return QQml_isSignalConnected(this, signal_index);
+ return d->isSignalConnected(signal_index);
}
/*!
int mySignalCount() { return receivers(SIGNAL(mySignal())); }
int propChangedCount() { return receivers(SIGNAL(propChanged())); }
+ int myUnconnectedSignalCount() { return receivers(SIGNAL(myUnconnectedSignal())); }
signals:
void mySignal();
void propChanged();
+ void myUnconnectedSignal();
+
+private:
+ friend class tst_qqmllanguage;
};
class MyDotPropertyObject : public QObject
QVERIFY(o != 0);
QCOMPARE(o->mySignalCount(), 1);
QCOMPARE(o->propChangedCount(), 2);
+ QCOMPARE(o->myUnconnectedSignalCount(), 0);
+
+ QVERIFY(o->isSignalConnected(QMetaMethod::fromSignal(&MyReceiversTestObject::mySignal)));
+ QVERIFY(o->isSignalConnected(QMetaMethod::fromSignal(&MyReceiversTestObject::propChanged)));
+ QVERIFY(!o->isSignalConnected(QMetaMethod::fromSignal(&MyReceiversTestObject::myUnconnectedSignal)));
delete o;
}