X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fmodelpropertymapper.cpp;fp=src%2Fclient%2Fmodelpropertymapper.cpp;h=a59a7a52fe3a811f21dfddbbcc7d59b3ebce330b;hp=31f8d5465026be3917081a2f44efbd07e4fdae3a;hb=42ce41212deabaf284cc496760cb901b9e3b4dc4;hpb=a76b7bf7206e939b1503910825a3225119c89e8b diff --git a/src/client/modelpropertymapper.cpp b/src/client/modelpropertymapper.cpp index 31f8d546..a59a7a52 100644 --- a/src/client/modelpropertymapper.cpp +++ b/src/client/modelpropertymapper.cpp @@ -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 ¤t, const QModelIndex &previous) { + if(current.row() == previous.row() && current.parent() != previous.parent()) + setCurrentRow(current, previous); +} + void ModelPropertyMapper::setCurrentRow(const QModelIndex ¤t, const QModelIndex &previous) { Q_UNUSED(previous) foreach(Mapping mapping, _mappings) {