mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
Assure that the item size is not exceeded -> the spacing is also respected for texts that cannot be wrapped
svn path=/trunk/KDE/kdebase/apps/; revision=689651
This commit is contained in:
parent
ee5c2c1666
commit
43b2b591ec
2 changed files with 47 additions and 2 deletions
|
@ -35,7 +35,9 @@
|
|||
DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controller) :
|
||||
KCategorizedView(parent),
|
||||
m_controller(controller),
|
||||
m_dragging(false)
|
||||
m_itemSize(),
|
||||
m_dragging(false),
|
||||
m_dropRect()
|
||||
{
|
||||
Q_ASSERT(controller != 0);
|
||||
setViewMode(QListView::IconMode);
|
||||
|
@ -93,6 +95,39 @@ DolphinIconsView::~DolphinIconsView()
|
|||
{
|
||||
}
|
||||
|
||||
QRect DolphinIconsView::visualRect(const QModelIndex& index) const
|
||||
{
|
||||
if (itemCategorizer() == 0) {
|
||||
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);
|
||||
}
|
||||
|
||||
return itemRect;
|
||||
}
|
||||
|
||||
return KCategorizedView::visualRect(index);
|
||||
}
|
||||
|
||||
QStyleOptionViewItem DolphinIconsView::viewOptions() const
|
||||
{
|
||||
return m_viewOptions;
|
||||
|
@ -321,6 +356,8 @@ void DolphinIconsView::updateGridSize(bool showPreview, bool showAdditionalInfo)
|
|||
const int spacing = settings->gridSpacing();
|
||||
setGridSize(QSize(itemWidth + spacing, itemHeight + spacing));
|
||||
|
||||
m_itemSize = QSize(itemWidth, itemHeight);
|
||||
|
||||
m_controller->setZoomInPossible(isZoomInPossible());
|
||||
m_controller->setZoomOutPossible(isZoomOutPossible());
|
||||
}
|
||||
|
|
|
@ -22,7 +22,10 @@
|
|||
|
||||
#include <kcategorizedview.h>
|
||||
#include <kitemcategorizer.h>
|
||||
#include <QtGui/QStyleOption>
|
||||
|
||||
#include <QSize>
|
||||
#include <QStyleOption>
|
||||
|
||||
#include <libdolphin_export.h>
|
||||
|
||||
class DolphinController;
|
||||
|
@ -41,6 +44,9 @@ public:
|
|||
explicit DolphinIconsView(QWidget* parent, DolphinController* controller);
|
||||
virtual ~DolphinIconsView();
|
||||
|
||||
/** @see QAbstractItemView::visualRect() */
|
||||
virtual QRect visualRect(const QModelIndex& index) const;
|
||||
|
||||
protected:
|
||||
virtual QStyleOptionViewItem viewOptions() const;
|
||||
virtual void contextMenuEvent(QContextMenuEvent* event);
|
||||
|
@ -77,6 +83,8 @@ private:
|
|||
DolphinController* m_controller;
|
||||
QStyleOptionViewItem m_viewOptions;
|
||||
|
||||
QSize m_itemSize;
|
||||
|
||||
bool m_dragging; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
|
||||
QRect m_dropRect; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue