[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9

Maximiliano Curia maxy at moszumanska.debian.org
Mon May 9 09:08:43 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=8c4e998

The following commit has been merged in the master branch:
commit 8c4e998183fb1296dc5e87fec00ab89f5359779f
Author: Aleix Pol <aleixpol at kde.org>
Date:   Thu Feb 26 18:06:01 2015 +0100

    Use the contact id to compare contacts rather than the contact pointer
    
    Contact pointers disappear easily and that doesn't map well to how the
    pinned model works, especially considering that it might be use before and
    after setting everything up.
---
 KTp/Declarative/pinned-contacts-model.cpp | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/KTp/Declarative/pinned-contacts-model.cpp b/KTp/Declarative/pinned-contacts-model.cpp
index 2deefa9..93b921a 100644
--- a/KTp/Declarative/pinned-contacts-model.cpp
+++ b/KTp/Declarative/pinned-contacts-model.cpp
@@ -94,8 +94,8 @@ void PinnedContactsModel::setState(const QStringList &pins)
 
 QModelIndex PinnedContactsModel::indexForContact(const KTp::ContactPtr &contact) const
 {
-    for (int i=0; i<d->m_pins.size();i++) {
-        if (d->m_pins[i]->contact() == contact) {
+    for (int i=0; i<d->m_pins.size() && contact; i++) {
+        if (d->m_pins[i]->contactId() == contact->id()) {
             return index(i);
         }
     }
@@ -193,6 +193,11 @@ void PinnedContactsModel::removeContactPin(const KTp::PersistentContactPtr &pin)
 
 void PinnedContactsModel::appendContactPin(const KTp::PersistentContactPtr &pin)
 {
+    auto samePin = [pin](const KTp::PersistentContactPtr &p) -> bool { return p->contactId() == pin->contactId(); };
+    if (std::find_if(d->m_pins.constBegin(), d->m_pins.constEnd(), samePin) != d->m_pins.constEnd()) {
+        return;
+    }
+
     int s = d->m_pins.size();
     beginInsertRows(QModelIndex(), s, s);
     d->m_pins += pin;
@@ -254,9 +259,10 @@ void PinnedContactsModel::conversationsStateChanged(const QModelIndex &parent, i
     for (int i = start; i <= end; i++) {
         QModelIndex idx = d->conversations->index(i, 0, parent);
         Conversation* conv = idx.data(ConversationsModel::ConversationRole).value<Conversation*>();
-        KTp::ContactPtr contact = conv->targetContact();
+        QString contactId = conv->targetContact()->id();
+
         Q_FOREACH(const KTp::PersistentContactPtr &p, d->m_pins) {
-            if (p->contact() == contact) {
+            if (p->contactId() == contactId) {
                 QModelIndex contactIdx = indexForContact(p->contact());
                 //We need to delay the dataChanged until the next event loop, when endRowsRemoved has been called
                 QMetaObject::invokeMethod(this, "dataChanged", Qt::QueuedConnection, Q_ARG(QModelIndex, contactIdx), Q_ARG(QModelIndex, contactIdx));

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list