┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphindetailsview.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-01-11 13:29:27 +0000
committerPeter Penz <[email protected]>2010-01-11 13:29:27 +0000
commit6301372c21857f2b1b5d9a2dd97f1d13a5b7994e (patch)
treeec9b979cc6c6c3233e357a4c0b8dfe3537f6e7cb /src/dolphindetailsview.cpp
parentc8ad5fd5b615f7d1a5ed1e793bfc367f7d3966b3 (diff)
Fixed issue in details view, that "sometimes" the rubberband selection only selects one item after an item has been deleted.
It took me nearly 30 minutes to find out how to reproduce this issue 100 % reliable: - a confirm dialog must be shown (thanks a lot to Dario for the hint!) - the most important part: the keys (e. g. Shift + Del) must be pressed long enough until the confirm dialog grabs the focus from the details view... BUG: 220898 BUG: 183386 BUG: 203112 svn path=/trunk/KDE/kdebase/apps/; revision=1073043
Diffstat (limited to 'src/dolphindetailsview.cpp')
-rw-r--r--src/dolphindetailsview.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp
index 5df105340..5a6342098 100644
--- a/src/dolphindetailsview.cpp
+++ b/src/dolphindetailsview.cpp
@@ -171,7 +171,7 @@ QSet<KUrl> DolphinDetailsView::expandedUrls() const
return m_expandedUrls;
}
-QRegion DolphinDetailsView::visualRegionForSelection(const QItemSelection &selection) const
+QRegion DolphinDetailsView::visualRegionForSelection(const QItemSelection& selection) const
{
// We have to make sure that the visualRect of each model index is inside the region.
// QTreeView::visualRegionForSelection does not do it right because it assumes implicitly
@@ -188,9 +188,21 @@ QRegion DolphinDetailsView::visualRegionForSelection(const QItemSelection &selec
bool DolphinDetailsView::event(QEvent* event)
{
- if (event->type() == QEvent::Polish) {
+ switch (event->type()) {
+ case QEvent::Polish:
header()->setResizeMode(QHeaderView::Interactive);
updateColumnVisibility();
+ break;
+
+ case QEvent::FocusOut:
+ // If a key-press triggers an action that e. g. opens a dialog, the
+ // widget gets no key-release event. Assure that the pressed state
+ // is reset to prevent accidently setting the current index during a selection.
+ m_keyPressed = false;
+ break;
+
+ default:
+ break;
}
return QTreeView::event(event);
@@ -765,8 +777,7 @@ void DolphinDetailsView::updateElasticBandSelection()
return;
}
}
- }
- else {
+ } else {
// This is the only piece of optimization data that needs to be explicitly
// discarded.
m_band.lastSelectionOrigin = QPoint();
@@ -880,6 +891,7 @@ void DolphinDetailsView::updateElasticBandSelection()
currIndex = nextIndex;
} while (!allItemsInBoundDone);
+
selectionModel()->select(itemsToToggle, QItemSelectionModel::Toggle);
m_band.lastSelectionOrigin = m_band.origin;