SelectionManager::SelectionManager(QAbstractItemView* parent) :
QObject(parent),
m_view(parent),
- m_toggle(0)
+ m_toggle(0),
+ m_connected(false)
{
connect(parent, SIGNAL(entered(const QModelIndex&)),
this, SLOT(slotEntered(const QModelIndex&)));
if (index.isValid() && (index.column() == DolphinModel::Name)) {
m_toggle->setUrl(urlForIndex(index));
- connect(m_view->model(), SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
- this, SLOT(slotRowsRemoved(const QModelIndex&, int, int)));
- connect(m_view->selectionModel(),
- SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
- this,
- SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&)));
+ if (!m_connected) {
+ connect(m_view->model(), SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
+ this, SLOT(slotRowsRemoved(const QModelIndex&, int, int)));
+ connect(m_view->selectionModel(),
+ SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
+ this,
+ SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&)));
+ m_connected = true;
+ }
const QRect rect = m_view->visualRect(index);
SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
this,
SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&)));
+ m_connected = false;
}
}
QItemSelectionModel* selModel = m_view->selectionModel();
if (selected) {
selModel->select(index, QItemSelectionModel::Select);
- selModel->setCurrentIndex(index, QItemSelectionModel::Select);
} else {
selModel->select(index, QItemSelectionModel::Deselect);
}
+ selModel->setCurrentIndex(index, QItemSelectionModel::Current);
}
}