┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphiniconsview.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-03-20 16:58:59 +0000
committerPeter Penz <[email protected]>2008-03-20 16:58:59 +0000
commita8ada5e6857d6dec25edf8ef57af9f27a91471c1 (patch)
treecd76cdcbae8e02405c9d4fb768d51b04384109d6 /src/dolphiniconsview.cpp
parentf738a9ff2ba3a71a6015d388c835ffa7c7e0be02 (diff)
QListView does not support having a margin for grids. Originally it has been tried to bypass this by overwriting QListView::visualRect(), but this has some side effects (see #155378 and #155575). The clean approach is to return a proper size hint in the file item delegate.
Currently a custom item delegate has been made for Dolphin, but we'll discuss whether it makes sense providing this feature already in KFileItemDelegate... BUG: 155378 BUG: 155575 CCMAIL: [email protected] svn path=/trunk/KDE/kdebase/apps/; revision=788095
Diffstat (limited to 'src/dolphiniconsview.cpp')
-rw-r--r--src/dolphiniconsview.cpp50
1 files changed, 6 insertions, 44 deletions
diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp
index 45fbf25b2..6235fcd87 100644
--- a/src/dolphiniconsview.cpp
+++ b/src/dolphiniconsview.cpp
@@ -21,6 +21,7 @@
#include "dolphincategorydrawer.h"
#include "dolphincontroller.h"
+#include "dolphinfileitemdelegate.h"
#include "dolphinsettings.h"
#include "dolphin_iconsmodesettings.h"
#include "dolphin_generalsettings.h"
@@ -132,50 +133,6 @@ DolphinIconsView::~DolphinIconsView()
m_categoryDrawer = 0;
}
-QRect DolphinIconsView::visualRect(const QModelIndex& index) const
-{
- const bool leftToRightFlow = (flow() == QListView::LeftToRight);
-
- QRect itemRect = KCategorizedView::visualRect(index);
-
- const int maxWidth = m_itemSize.width();
- const int maxHeight = m_itemSize.height();
-
- if (itemRect.width() > maxWidth) {
- // assure that the maximum item width is not exceeded
- if (leftToRightFlow) {
- const int left = itemRect.left() + (itemRect.width() - maxWidth) / 2;
- itemRect.setLeft(left);
- }
- itemRect.setWidth(maxWidth);
- }
-
- if (itemRect.height() > maxHeight) {
- // assure that the maximum item height is not exceeded
- if (!leftToRightFlow) {
- const int top = itemRect.top() + (itemRect.height() - maxHeight) / 2;
- itemRect.setTop(top);
- }
- itemRect.setHeight(maxHeight);
- }
-
- KCategorizedSortFilterProxyModel* proxyModel = dynamic_cast<KCategorizedSortFilterProxyModel*>(model());
- if (leftToRightFlow && !proxyModel->isCategorizedModel()) {
- // TODO: QListView::visualRect() calculates a wrong position of the items under
- // certain circumstances (e. g. if the text is too long). This issue is bypassed
- // by the following code (I'll try create a patch for Qt but as Dolphin must also work with
- // Qt 4.3.0 this workaround must get applied at least for KDE 4.0).
- 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 = (maxWidth - itemRect.width()) / 2;
- itemRect.moveLeft((gridIndex * gridWidth) + margin + centerInc);
- }
-
- return itemRect;
-}
-
QStyleOptionViewItem DolphinIconsView::viewOptions() const
{
QStyleOptionViewItem viewOptions = KCategorizedView::viewOptions();
@@ -461,6 +418,11 @@ void DolphinIconsView::updateGridSize(bool showPreview, int additionalInfoCount)
m_controller->setZoomInPossible(isZoomInPossible());
m_controller->setZoomOutPossible(isZoomOutPossible());
+
+ DolphinFileItemDelegate* delegate = qobject_cast<DolphinFileItemDelegate*>(itemDelegate());
+ if (delegate != 0) {
+ delegate->setMaximumSize(m_itemSize);
+ }
}
int DolphinIconsView::additionalInfoCount() const