// Qt 4.4, so that this workaround can be skipped.
#define DOLPHIN_DRAGANDDROP
+// By defining KDE_WORKAROUND_FOR_QT_VIEW_BUG we save the selection being held
+// before mousePressEvent happens. On Qt there is something clearing the last
+// selection made, what make it impossible to save our very last selection.
+#define KDE_WORKAROUND_FOR_QT_VIEW_BUG
+
KCategorizedView::Private::Private(KCategorizedView *listView)
: listView(listView)
, categoryDrawer(0)
horizontalOffset());
}
+#ifdef KDE_WORKAROUND_FOR_QT_VIEW_BUG
+ QItemSelection prevSelection = selectionModel()->selection();
+#endif
QListView::mousePressEvent(event);
+#ifdef KDE_WORKAROUND_FOR_QT_VIEW_BUG
+ selectionModel()->select(prevSelection, QItemSelectionModel::Select);
+#endif
viewport()->update(d->categoryVisualRect(d->hoveredCategory));
}
initialPressPosition.setY(initialPressPosition.y() + verticalOffset());
initialPressPosition.setX(initialPressPosition.x() + horizontalOffset());
- QItemSelection selection;
- QItemSelection deselection;
-#if 0
if (initialPressPosition == d->initialPressPosition)
{
foreach(const QString &category, d->categories)
{
if (d->categoryVisualRect(category).contains(event->pos()))
{
- foreach (const QModelIndex &index, d->categoriesIndexes[category])
+ QItemSelection selection;
+ QModelIndexList indexList = d->categoriesIndexes[category];
+
+ foreach (const QModelIndex &index, indexList)
{
QModelIndex selectIndex = index.model()->index(index.row(), 0);
- if (/*!d->lastSelection.contains(selectIndex)*/)
- {
- selection << QItemSelectionRange(selectIndex);
- }
- else
- {
- deselection << QItemSelectionRange(selectIndex);
- }
+ selection << QItemSelectionRange(selectIndex);
}
- selectionModel()->select(selection, QItemSelectionModel::Select);
- selectionModel()->select(deselection, QItemSelectionModel::Deselect);
+ selectionModel()->select(selection, QItemSelectionModel::SelectCurrent);
break;
}
}
}
-#endif
if (d->hovered.isValid())
viewport()->update(visualRect(d->hovered));