mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
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
This commit is contained in:
parent
c8ad5fd5b6
commit
6301372c21
2 changed files with 17 additions and 5 deletions
|
@ -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;
|
||||
|
|
|
@ -52,7 +52,7 @@ public:
|
|||
*/
|
||||
QSet<KUrl> expandedUrls() const;
|
||||
|
||||
virtual QRegion visualRegionForSelection(const QItemSelection & selection) const;
|
||||
virtual QRegion visualRegionForSelection(const QItemSelection& selection) const;
|
||||
|
||||
protected:
|
||||
virtual bool event(QEvent* event);
|
||||
|
|
Loading…
Reference in a new issue