┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dolphiniconsview.cpp19
-rw-r--r--src/dolphiniconsview.h1
2 files changed, 20 insertions, 0 deletions
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<KCategorizedSortFilterProxyModel*>(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;