Fixed Bug in ModelPropertyMapper where currentChanges where unnoticed cause the rowIn...
authorMarcus Eggenberger <egs@quassel-irc.org>
Thu, 25 Oct 2007 19:05:09 +0000 (19:05 +0000)
committerMarcus Eggenberger <egs@quassel-irc.org>
Thu, 25 Oct 2007 19:05:09 +0000 (19:05 +0000)
src/client/modelpropertymapper.cpp
src/client/modelpropertymapper.h

index 31f8d54..a59a7a5 100644 (file)
@@ -53,6 +53,8 @@ void ModelPropertyMapper::setSelectionModel(QItemSelectionModel *selectionModel)
   _selectionModel = selectionModel;
   connect(_selectionModel, SIGNAL(currentRowChanged(QModelIndex, QModelIndex)),
          this, SLOT(setCurrentRow(QModelIndex, QModelIndex)));
+  connect(_selectionModel, SIGNAL(currentChanged(QModelIndex, QModelIndex)),
+         this, SLOT(setCurrentIndex(QModelIndex, QModelIndex)));
   
   setCurrentRow(selectionModel->currentIndex(), QModelIndex());
 }
@@ -84,6 +86,11 @@ void ModelPropertyMapper::removeMapping(int column, int role, QObject *target, c
   _mappings.removeAll(Mapping(column, role, target, property));
 }
 
+void ModelPropertyMapper::setCurrentIndex(const QModelIndex &current, const QModelIndex &previous) {
+  if(current.row() == previous.row() && current.parent() != previous.parent())
+    setCurrentRow(current, previous);
+}
+
 void ModelPropertyMapper::setCurrentRow(const QModelIndex &current, const QModelIndex &previous) {
   Q_UNUSED(previous)
   foreach(Mapping mapping, _mappings) {
index 988efa8..14270ab 100644 (file)
@@ -46,6 +46,7 @@ public:
   void removeMapping(int column, int role, QObject *target, const QByteArray &property);
                                                                                      
 public slots:
+  void setCurrentIndex(const QModelIndex &current, const QModelIndex &previous);
   void setCurrentRow(const QModelIndex &current, const QModelIndex &previous);
 
 private slots: