+void ColumnWidget::updateSelection(const KUrl& url)
+{
+ setSelectionMode(SingleSelection);
+ QItemSelectionModel* selModel = selectionModel();
+ if (url.isEmpty()) {
+ selModel->clear();
+ return;
+ }
+
+ const QAbstractProxyModel* proxyModel = static_cast<const QAbstractProxyModel*>(m_view->model());
+ const KDirModel* dirModel = static_cast<const KDirModel*>(proxyModel->sourceModel());
+ const QModelIndex dirIndex = dirModel->indexForUrl(url);
+ const QModelIndex proxyIndex = proxyModel->mapFromSource(dirIndex);
+
+ const QItemSelection selection = selModel->selection();
+ const bool isIndexSelected = selModel->isSelected(proxyIndex);
+
+ if (!m_active && ((selection.count() > 1) || !isIndexSelected)) {
+ selModel->clear();
+ }
+ if (!isIndexSelected) {
+ selModel->select(proxyIndex, QItemSelectionModel::Select);
+ }
+}
+