From a7947d3c87a9871b0a84f7f2734fc1e5904c4d1c Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 16 Jul 2018 15:49:59 +0200 Subject: [PATCH] Connection guard, only valid signal connections will be added --- src/blackmisc/connectionguard.cpp | 14 +++++++++++--- src/blackmisc/connectionguard.h | 6 +++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/blackmisc/connectionguard.cpp b/src/blackmisc/connectionguard.cpp index 9a2924a83..071c10c9a 100644 --- a/src/blackmisc/connectionguard.cpp +++ b/src/blackmisc/connectionguard.cpp @@ -17,14 +17,22 @@ namespace BlackMisc m_connections.append(connection); } - void CConnectionGuard::append(const QMetaObject::Connection &connection) + bool CConnectionGuard::append(const QMetaObject::Connection &connection) { + if (!connection) { return false; } m_connections.append(connection); + return true; } - void CConnectionGuard::append(const QList &connections) + bool CConnectionGuard::append(const QList &connections) { - m_connections.append(connections); + int c = 0; + for (const QMetaObject::Connection &connection : connections) + { + if (!connection) { continue; } + if (this->append(connection)) { c++; } + } + return c > 0; } CConnectionGuard::~CConnectionGuard() diff --git a/src/blackmisc/connectionguard.h b/src/blackmisc/connectionguard.h index cf6ab8b66..8cd8d3323 100644 --- a/src/blackmisc/connectionguard.h +++ b/src/blackmisc/connectionguard.h @@ -50,10 +50,10 @@ namespace BlackMisc ~CConnectionGuard(); //! Add connection - void append(const QMetaObject::Connection &connection); + bool append(const QMetaObject::Connection &connection); //! Add connections - void append(const QList &connections); + bool append(const QList &connections); //! Disconnect all int disconnectAll(); @@ -61,6 +61,6 @@ namespace BlackMisc private: QList m_connections; }; -} // BlackMisc +} // ns #endif