aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/qml/qqmldata_p.h2
-rw-r--r--src/qml/qml/qqmlengine.cpp11
-rw-r--r--src/qml/qml/qqmlglobal_p.h4
-rw-r--r--src/quick/items/qquickitem.cpp2
-rw-r--r--tests/auto/qml/qqmllanguage/testtypes.h5
-rw-r--r--tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp5
6 files changed, 19 insertions, 10 deletions
diff --git a/src/qml/qml/qqmldata_p.h b/src/qml/qml/qqmldata_p.h
index 879d59722b..225d6d854d 100644
--- a/src/qml/qml/qqmldata_p.h
+++ b/src/qml/qml/qqmldata_p.h
@@ -95,6 +95,7 @@ public:
QAbstractDeclarativeData::parentChanged = parentChanged;
QAbstractDeclarativeData::signalEmitted = signalEmitted;
QAbstractDeclarativeData::receivers = receivers;
+ QAbstractDeclarativeData::isSignalConnected = isSignalConnected;
}
}
@@ -102,6 +103,7 @@ public:
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 *);
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp
index 6133568426..391b8e89b3 100644
--- a/src/qml/qml/qqmlengine.cpp
+++ b/src/qml/qml/qqmlengine.cpp
@@ -570,6 +570,11 @@ int QQmlData::receivers(QAbstractDeclarativeData *d, const QObject *, int index)
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;
@@ -1304,12 +1309,6 @@ void QQmlData::addNotify(int index, QQmlNotifierEndpoint *endpoint)
}
}
-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()
diff --git a/src/qml/qml/qqmlglobal_p.h b/src/qml/qml/qqmlglobal_p.h
index c237af6a7c..b3e8eb6421 100644
--- a/src/qml/qml/qqmlglobal_p.h
+++ b/src/qml/qml/qqmlglobal_p.h
@@ -164,15 +164,13 @@ T qmlobject_cast(QObject *object)
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
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index ab942f6489..02a0c22c5d 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -911,7 +911,7 @@ bool QQuickKeysAttached::isConnected(const char *signalName)
{
Q_D(QQuickKeysAttached);
int signal_index = d->signalIndex(signalName);
- return QQml_isSignalConnected(this, signal_index);
+ return d->isSignalConnected(signal_index);
}
/*!
diff --git a/tests/auto/qml/qqmllanguage/testtypes.h b/tests/auto/qml/qqmllanguage/testtypes.h
index 01f26c7f67..450abebad4 100644
--- a/tests/auto/qml/qqmllanguage/testtypes.h
+++ b/tests/auto/qml/qqmllanguage/testtypes.h
@@ -643,10 +643,15 @@ public:
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
diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
index ed94eff574..6a4acb3280 100644
--- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
+++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
@@ -2738,6 +2738,11 @@ void tst_qqmllanguage::receivers()
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;
}