From 7d00f38a85f38de1d71368e1104cf700a73f43a8 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Fri, 19 Oct 2012 19:07:25 +0200 Subject: [PATCH] Allow to blacklist certain signals from forwarding This avoids that bound signal handlers are called multiple times for signals with the same name (e.g. QPushButton::clicked() and QPushButton::clicked(bool)) --- declarativeobjects.cpp | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/declarativeobjects.cpp b/declarativeobjects.cpp index 51e0256..b368896 100644 --- a/declarativeobjects.cpp +++ b/declarativeobjects.cpp @@ -87,11 +87,14 @@ void AbstractDeclarativeObject::dataClear() { } -static void connectAllSignals(QObject *sender, QObject *receiver) +static void connectAllSignals(QObject *sender, QObject *receiver, const QSet &blacklist = QSet()) { for (int i = 0; i < sender->metaObject()->methodCount(); ++i) { const QMetaMethod method = sender->metaObject()->method(i); if (method.methodType() == QMetaMethod::Signal) { + if (blacklist.contains(method.signature())) + continue; + const QByteArray signature = "2" + QByteArray(method.signature()); QObject::connect(sender, signature.data(), receiver, signature.data()); } @@ -787,7 +790,7 @@ CUSTOM_METAOBJECT(DeclarativeMenuBar, QMenuBar) // DeclarativePushButton DeclarativePushButton::DeclarativePushButton(QObject *parent) : DeclarativeWidgetProxy(parent) { - connectAllSignals(m_proxiedObject, this); + connectAllSignals(m_proxiedObject, this, QSet() << "clicked()"); } CUSTOM_METAOBJECT(DeclarativePushButton, QPushButton) -- 1.7.2.5