Merge pull request #175 from ayonix/ssl-fix
[quassel.git] / src / client / selectionmodelsynchronizer.cpp
index 4d2ed23..14c57c0 100644 (file)
@@ -96,7 +96,7 @@ void SelectionModelSynchronizer::selectionModelDestroyed(QObject *object)
             iter = _selectionModels.erase(iter);
         }
         else {
-            iter++;
+            ++iter;
         }
     }
 }
@@ -252,9 +252,16 @@ void SelectionModelSynchronizer::currentChanged(const QModelIndex &current, cons
     QSet<QItemSelectionModel *>::iterator iter = _selectionModels.begin();
     while (iter != _selectionModels.end()) {
         (*iter)->setCurrentIndex(mapFromSource(current, (*iter)), QItemSelectionModel::Current);
-        iter++;
+        ++iter;
     }
     _changeCurrentEnabled = true;
+
+    // Trigger a dataChanged() signal from the base model to update all proxy models (e.g. filters).
+    // Since signals are protected, we have to use invokeMethod for faking signal emission.
+    if (previous.isValid()) {
+        QMetaObject::invokeMethod(model(), "dataChanged", Qt::DirectConnection,
+                                  Q_ARG(QModelIndex, previous), Q_ARG(QModelIndex, previous));
+    }
 }
 
 
@@ -267,7 +274,7 @@ void SelectionModelSynchronizer::selectionChanged(const QItemSelection &selected
     QSet<QItemSelectionModel *>::iterator iter = _selectionModels.begin();
     while (iter != _selectionModels.end()) {
         (*iter)->select(mapSelectionFromSource(currentSelection(), (*iter)), QItemSelectionModel::ClearAndSelect);
-        iter++;
+        ++iter;
     }
     _changeSelectionEnabled = true;
 }