diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 5df1053406..5a6342098d 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -171,7 +171,7 @@ QSet 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; diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h index 3bd62d33fc..ddf47bfc3e 100644 --- a/src/dolphindetailsview.h +++ b/src/dolphindetailsview.h @@ -52,7 +52,7 @@ public: */ QSet expandedUrls() const; - virtual QRegion visualRegionForSelection(const QItemSelection & selection) const; + virtual QRegion visualRegionForSelection(const QItemSelection& selection) const; protected: virtual bool event(QEvent* event);