X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/51b61d7735bc4a6461a4b90493e04071ff566ae0..737b74aa294e05cebc2cd1e48a4fa66cf62f222e:/src/kcategorizedview.cpp diff --git a/src/kcategorizedview.cpp b/src/kcategorizedview.cpp index 03002d303..152573214 100644 --- a/src/kcategorizedview.cpp +++ b/src/kcategorizedview.cpp @@ -39,6 +39,11 @@ // 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) @@ -1038,7 +1043,13 @@ void KCategorizedView::mousePressEvent(QMouseEvent *event) 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)); } @@ -1059,37 +1070,28 @@ void KCategorizedView::mouseReleaseEvent(QMouseEvent *event) 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));