┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2011-10-08 22:46:37 +0200
committerPeter Penz <[email protected]>2011-10-08 22:47:52 +0200
commit8d44ebc1487b9dc714b085ee8d3733a187abf8bb (patch)
treeb892d233f66c9b62c167bc068213b7c566423780 /src/kitemviews
parent0e8ba413f4b9b479f1196f1433ec74274e5ea95d (diff)
Details-view: Fix column-width issue
The column-width must respect the minimum width of the header-roles.
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kitemlistheader.cpp12
-rw-r--r--src/kitemviews/kitemlistheader_p.h3
-rw-r--r--src/kitemviews/kitemlistview.cpp16
3 files changed, 22 insertions, 9 deletions
diff --git a/src/kitemviews/kitemlistheader.cpp b/src/kitemviews/kitemlistheader.cpp
index 3187d2c36..96f868aad 100644
--- a/src/kitemviews/kitemlistheader.cpp
+++ b/src/kitemviews/kitemlistheader.cpp
@@ -112,6 +112,12 @@ QHash<QByteArray, qreal> KItemListHeader::visibleRolesWidths() const
return m_visibleRolesWidths;
}
+qreal KItemListHeader::minimumRoleWidth() const
+{
+ QFontMetricsF fontMetrics(font());
+ return fontMetrics.height() * 4;
+}
+
void KItemListHeader::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
{
Q_UNUSED(option);
@@ -340,10 +346,4 @@ bool KItemListHeader::isAboveRoleGrip(const QPointF& pos, int roleIndex) const
return pos.x() >= (x - grip) && pos.x() <= x;
}
-qreal KItemListHeader::minimumRoleWidth() const
-{
- QFontMetricsF fontMetrics(font());
- return fontMetrics.height() * 4;
-}
-
#include "kitemlistheader_p.moc"
diff --git a/src/kitemviews/kitemlistheader_p.h b/src/kitemviews/kitemlistheader_p.h
index 43b7db59a..a3f06f114 100644
--- a/src/kitemviews/kitemlistheader_p.h
+++ b/src/kitemviews/kitemlistheader_p.h
@@ -47,6 +47,8 @@ public:
void setVisibleRolesWidths(const QHash<QByteArray, qreal> rolesWidths);
QHash<QByteArray, qreal> visibleRolesWidths() const;
+ qreal minimumRoleWidth() const;
+
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
signals:
@@ -77,7 +79,6 @@ private:
void updateHoveredRoleIndex(const QPointF& pos);
int roleIndexAt(const QPointF& pos) const;
bool isAboveRoleGrip(const QPointF& pos, int roleIndex) const;
- qreal minimumRoleWidth() const;
private:
enum RoleOperation
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp
index 08c92e551..93baa1334 100644
--- a/src/kitemviews/kitemlistview.cpp
+++ b/src/kitemviews/kitemlistview.cpp
@@ -1459,8 +1459,20 @@ void KItemListView::updateVisibleRolesSizes(const KItemRangeList& itemRanges)
}
if (itemCount == rangesItemCount) {
- // The sizes of all roles need to be determined
m_visibleRolesSizes = visibleRolesSizes(itemRanges);
+
+ // Assure the the sizes are not smaller than the minimum defined by the header
+ // TODO: Currently only implemented for a top-aligned header
+ const qreal minHeaderRoleWidth = m_header->minimumRoleWidth();
+ QMutableHashIterator<QByteArray, QSizeF> it (m_visibleRolesSizes);
+ while (it.hasNext()) {
+ it.next();
+ const QSizeF& size = it.value();
+ if (size.width() < minHeaderRoleWidth) {
+ const QSizeF newSize(minHeaderRoleWidth, size.height());
+ m_visibleRolesSizes.insert(it.key(), newSize);
+ }
+ }
} else {
// Only a sub range of the roles need to be determined.
// The chances are good that the sizes of the sub ranges
@@ -1483,7 +1495,7 @@ void KItemListView::updateVisibleRolesSizes(const KItemRangeList& itemRanges)
if (!updateRequired) {
// All the updated sizes are smaller than the current sizes and no change
- // of the roles-widths is required
+ // of the stretched roles-widths is required
return;
}
}