From: Peter Penz Date: Sat, 29 Mar 2008 19:40:26 +0000 (+0000) Subject: QListView might return a wrong x-position if the decoration size decreases. I tempora... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/ae7d038d33590fb24d89b876e8a266d97357299c QListView might return a wrong x-position if the decoration size decreases. I temporary bypassed this in Dolphin, as I'm not 100 % sure whether it is really a QListView issue or related to KFileItemDelegate. To reproduce this issue with Qt-only quite a lot effort is needed -> I'll wait until Qt4.4 final is released... CCMAIL: fredrik@kde.org svn path=/trunk/KDE/kdebase/apps/; revision=791535 --- diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp index da1784c31..8178d062a 100644 --- a/src/dolphiniconsview.cpp +++ b/src/dolphiniconsview.cpp @@ -133,6 +133,25 @@ DolphinIconsView::~DolphinIconsView() m_categoryDrawer = 0; } +QRect DolphinIconsView::visualRect(const QModelIndex& index) const +{ + QRect itemRect = KCategorizedView::visualRect(index); + + KCategorizedSortFilterProxyModel* proxyModel = dynamic_cast(model()); + if ((flow() == QListView::LeftToRight) && !proxyModel->isCategorizedModel()) { + // TODO: QListView might return a wrong x-position if the decoration size decreases. This is bypassed + // by the following workaround... + const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); + const int margin = settings->gridSpacing(); + const int gridWidth = gridSize().width(); + const int gridIndex = (itemRect.left() - margin + 1) / gridWidth; + const int centerInc = (m_itemSize.width() - itemRect.width()) / 2; + itemRect.moveLeft((gridIndex * gridWidth) + margin + centerInc); + } + + return itemRect; +} + QStyleOptionViewItem DolphinIconsView::viewOptions() const { QStyleOptionViewItem viewOptions = KCategorizedView::viewOptions(); diff --git a/src/dolphiniconsview.h b/src/dolphiniconsview.h index 01aac03f2..65d53ce71 100644 --- a/src/dolphiniconsview.h +++ b/src/dolphiniconsview.h @@ -47,6 +47,7 @@ class LIBDOLPHINPRIVATE_EXPORT DolphinIconsView : public KCategorizedView public: explicit DolphinIconsView(QWidget* parent, DolphinController* controller); virtual ~DolphinIconsView(); + virtual QRect visualRect(const QModelIndex& index) const; protected: virtual QStyleOptionViewItem viewOptions() const;