[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