Reimplement visualRegionForSelection in DolpinDetailsView.

Fixes the problem that not the entire area affected by changing the
selection gets updated. QTreeView::visualRegionForSelection assumes
implicitly that the visualRects of all items have the same width,
which is not the case here.

Fix will be in KDE 4.4 Beta 2.

BUG: 218114

svn path=/trunk/KDE/kdebase/apps/; revision=1062076
This commit is contained in:
Frank Reininghaus 2009-12-13 18:18:08 +00:00
parent 5d5d5c8e80
commit a2365b6ed8
2 changed files with 18 additions and 1 deletions

View file

@ -1,4 +1,4 @@
/***************************************************************************
/***************************************************************************
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) *
* Copyright (C) 2008 by Simon St. James (kdedevel@etotheipiplusone.com) *
* *
@ -171,6 +171,21 @@ QSet<KUrl> DolphinDetailsView::expandedUrls() const
return m_expandedUrls;
}
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
// that all visualRects have the same width, which is in general not the case here.
QRegion selectionRegion;
const QModelIndexList indexes = selection.indexes();
foreach(const QModelIndex& index, indexes) {
selectionRegion += visualRect(index);
}
return selectionRegion;
}
bool DolphinDetailsView::event(QEvent* event)
{
if (event->type() == QEvent::Polish) {

View file

@ -52,6 +52,8 @@ public:
*/
QSet<KUrl> expandedUrls() const;
virtual QRegion visualRegionForSelection(const QItemSelection & selection) const;
protected:
virtual bool event(QEvent* event);
virtual QStyleOptionViewItem viewOptions() const;