From: Frank Reininghaus Date: Sun, 13 Dec 2009 18:18:08 +0000 (+0000) Subject: Reimplement visualRegionForSelection in DolpinDetailsView. X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/a2365b6ed82a4d85fffaa06e51c1c458c301e79d 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 --- diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 1bf5f75e0..53d7fb951 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -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 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) { diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h index 30e126cd4..3bd62d33f 100644 --- a/src/dolphindetailsview.h +++ b/src/dolphindetailsview.h @@ -52,6 +52,8 @@ public: */ QSet expandedUrls() const; + virtual QRegion visualRegionForSelection(const QItemSelection & selection) const; + protected: virtual bool event(QEvent* event); virtual QStyleOptionViewItem viewOptions() const;