From d85e5d756015fc11a810d3fa050c57d08217e79d Mon Sep 17 00:00:00 2001 From: Florian Geyer Date: Wed, 18 Apr 2012 15:16:38 +0200 Subject: [PATCH] Update connection of modified signals of entries when a parent group changes database. --- src/core/Group.cpp | 9 ++++++++- tests/TestModified.cpp | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/core/Group.cpp b/src/core/Group.cpp index 4e8292164..17f066058 100644 --- a/src/core/Group.cpp +++ b/src/core/Group.cpp @@ -310,7 +310,9 @@ void Group::addEntry(Entry *entry) m_entries << entry; connect(entry, SIGNAL(dataChanged(Entry*)), SIGNAL(entryDataChanged(Entry*))); - connect(entry, SIGNAL(modified()), m_db, SIGNAL(modified())); + if (m_db) { + connect(entry, SIGNAL(modified()), m_db, SIGNAL(modified())); + } Q_EMIT modified(); Q_EMIT entryAdded(); @@ -335,6 +337,11 @@ void Group::recSetDatabase(Database* db) disconnect(SIGNAL(added()), m_db); disconnect(SIGNAL(modified()), m_db); + Q_FOREACH (Entry* entry, m_entries) { + entry->disconnect(m_db); + connect(entry, SIGNAL(modified()), db, SIGNAL(modified())); + } + connect(this, SIGNAL(dataChanged(Group*)), db, SIGNAL(groupDataChanged(Group*))); connect(this, SIGNAL(aboutToRemove(Group*)), db, SIGNAL(groupAboutToRemove(Group*))); connect(this, SIGNAL(removed()), db, SIGNAL(groupRemoved())); diff --git a/tests/TestModified.cpp b/tests/TestModified.cpp index 7d1309250..fa196038c 100644 --- a/tests/TestModified.cpp +++ b/tests/TestModified.cpp @@ -71,6 +71,11 @@ void TestModified::testSignals() QCOMPARE(spyModified.count(), spyCount); QCOMPARE(spyModified2.count(), spyCount2); + entry1->setTitle("test"); + spyCount2++; + QCOMPARE(spyModified.count(), spyCount); + QCOMPARE(spyModified2.count(), spyCount2); + QPointer entry2 = new Entry(); entry2->setGroup(g2); spyCount++;