From: Peter Penz Date: Sat, 8 Oct 2011 20:46:37 +0000 (+0200) Subject: Details-view: Fix column-width issue X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/8d44ebc1487b9dc714b085ee8d3733a187abf8bb?ds=inline Details-view: Fix column-width issue The column-width must respect the minimum width of the header-roles. --- 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 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 rolesWidths); QHash 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 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; } }