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
-/***************************************************************************
+ /***************************************************************************
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) *
* Copyright (C) 2008 by Simon St. James (kdedevel@etotheipiplusone.com) *
* *
* Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) *
* Copyright (C) 2008 by Simon St. James (kdedevel@etotheipiplusone.com) *
* *
+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) {
bool DolphinDetailsView::event(QEvent* event)
{
if (event->type() == QEvent::Polish) {
*/
QSet<KUrl> expandedUrls() const;
*/
QSet<KUrl> expandedUrls() const;
+ virtual QRegion visualRegionForSelection(const QItemSelection & selection) const;
+
protected:
virtual bool event(QEvent* event);
virtual QStyleOptionViewItem viewOptions() const;
protected:
virtual bool event(QEvent* event);
virtual QStyleOptionViewItem viewOptions() const;