summaryrefslogtreecommitdiff
path: root/src/location/declarativemaps/qdeclarativegeomapparameter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/declarativemaps/qdeclarativegeomapparameter.cpp')
-rw-r--r--src/location/declarativemaps/qdeclarativegeomapparameter.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/location/declarativemaps/qdeclarativegeomapparameter.cpp b/src/location/declarativemaps/qdeclarativegeomapparameter.cpp
index c1361d5d..2408e1c7 100644
--- a/src/location/declarativemaps/qdeclarativegeomapparameter.cpp
+++ b/src/location/declarativemaps/qdeclarativegeomapparameter.cpp
@@ -39,10 +39,28 @@
#include <QByteArray>
#include <QMetaObject>
#include <QMetaProperty>
-#include <QSignalMapper>
+#include <QObject>
QT_BEGIN_NAMESPACE
+namespace {
+class SignalMapper : public QObject
+{
+ Q_OBJECT
+
+ int i;
+public:
+ explicit SignalMapper(int i, QObject *parent = nullptr)
+ : QObject(parent), i(i) {}
+
+public Q_SLOTS:
+ void map() { emit mapped(i); }
+
+Q_SIGNALS:
+ void mapped(int);
+};
+} // unnamed namespace
+
/*!
\qmltype MapParameter
\inqmlmodule QtLocation
@@ -114,8 +132,7 @@ void QDeclarativeGeoMapParameter::componentComplete()
return;
}
- QSignalMapper *mapper = new QSignalMapper(this);
- mapper->setMapping(this, i);
+ SignalMapper *mapper = new SignalMapper(i, this);
const QByteArray signalName = '2' + property.notifySignal().methodSignature(); // TODO: explain why '2'
QObject::connect(this, signalName, mapper, SLOT(map()));
@@ -131,3 +148,5 @@ void QDeclarativeGeoMapParameter::onPropertyUpdated(int index)
}
QT_END_NAMESPACE
+
+#include "qdeclarativegeomapparameter.moc"