┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-03-22 15:39:07 +0100
committerPeter Penz <[email protected]>2012-03-22 15:47:01 +0100
commit3fc96ef97bbea25418bb22a18e82f6b874eedb38 (patch)
tree3762e6fc2652b22cf5594333d2c24c28f8198571 /src
parent403aa0bff3aecdd9cc94308a497590dcb569f597 (diff)
Details view: Expand the name-column like in Dolphin 1.x
With the new view-engine the name-column always has been expanded to the maximum width of all available names. But this makes it impossible to see other columns without scrolling when having long filenames, so per default the Dolphin 1.x behavior has been applied to the new view-engine so that the name-column-width gets decreased to be able to show the other columns. This patch will be released with KDE applications 4.8.2. For Dolphin 2.1 (KDE applications 4.9) user-modified widths of the columns will be remembered per directory also between different sessions. CCBUG: 264434
Diffstat (limited to 'src')
-rw-r--r--src/kitemviews/kfileitemlistview.cpp2
-rw-r--r--src/kitemviews/kitemlistheader.cpp2
-rw-r--r--src/kitemviews/kitemlistheader_p.h2
-rw-r--r--src/kitemviews/kitemlistview.cpp28
4 files changed, 17 insertions, 17 deletions
diff --git a/src/kitemviews/kfileitemlistview.cpp b/src/kitemviews/kfileitemlistview.cpp
index 796a45099..54d858c1e 100644
--- a/src/kitemviews/kfileitemlistview.cpp
+++ b/src/kitemviews/kfileitemlistview.cpp
@@ -513,7 +513,7 @@ QSizeF KFileItemListView::visibleRoleSizeHint(int index, const QByteArray& role)
if (role == "name") {
// Increase the width by the expansion-toggle and the current expansion level
const int expandedParentsCount = values.value("expandedParentsCount", 0).toInt();
- width += option.padding + expandedParentsCount * itemSize().height() + KIconLoader::SizeSmall;
+ width += option.padding + (expandedParentsCount + 1) * itemSize().height() + KIconLoader::SizeSmall;
// Increase the width by the required space for the icon
width += option.padding * 2 + option.iconSize;
diff --git a/src/kitemviews/kitemlistheader.cpp b/src/kitemviews/kitemlistheader.cpp
index dfe76bc95..ea714c96f 100644
--- a/src/kitemviews/kitemlistheader.cpp
+++ b/src/kitemviews/kitemlistheader.cpp
@@ -95,7 +95,7 @@ QList<QByteArray> KItemListHeader::visibleRoles() const
return m_visibleRoles;
}
-void KItemListHeader::setVisibleRolesWidths(const QHash<QByteArray, qreal> rolesWidths)
+void KItemListHeader::setVisibleRolesWidths(const QHash<QByteArray, qreal>& rolesWidths)
{
m_visibleRolesWidths = rolesWidths;
diff --git a/src/kitemviews/kitemlistheader_p.h b/src/kitemviews/kitemlistheader_p.h
index 364a5f1c0..a0e54f5e3 100644
--- a/src/kitemviews/kitemlistheader_p.h
+++ b/src/kitemviews/kitemlistheader_p.h
@@ -44,7 +44,7 @@ public:
void setVisibleRoles(const QList<QByteArray>& roles);
QList<QByteArray> visibleRoles() const;
- void setVisibleRolesWidths(const QHash<QByteArray, qreal> rolesWidths);
+ void setVisibleRolesWidths(const QHash<QByteArray, qreal>& rolesWidths);
QHash<QByteArray, qreal> visibleRolesWidths() const;
qreal minimumRoleWidth() const;
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp
index 678b09bff..0880687e1 100644
--- a/src/kitemviews/kitemlistview.cpp
+++ b/src/kitemviews/kitemlistview.cpp
@@ -1998,7 +1998,7 @@ void KItemListView::updateStretchedVisibleRolesSizes()
// Calculate the maximum size of an item by considering the
// visible role sizes and apply them to the layouter. If the
- // size does not use the available view-size it the size of the
+ // size does not use the available view-size the size of the
// first role will get stretched.
m_stretchedVisibleRolesSizes = m_visibleRolesSizes;
const QByteArray role = m_visibleRoles.first();
@@ -2009,25 +2009,25 @@ void KItemListView::updateStretchedVisibleRolesSizes()
if (dynamicItemSize.width() <= 0) {
const qreal requiredWidth = visibleRolesSizesWidthSum();
const qreal availableWidth = size().width();
- if (requiredWidth < availableWidth) {
- // Stretch the first role to use the whole width for the item
+ if (requiredWidth != availableWidth) {
+ // Stretch the first role to use the whole remaining width
firstRoleSize.rwidth() += availableWidth - requiredWidth;
- m_stretchedVisibleRolesSizes.insert(role, firstRoleSize);
- }
- dynamicItemSize.setWidth(qMax(requiredWidth, availableWidth));
- }
- if (dynamicItemSize.height() <= 0) {
- const qreal requiredHeight = visibleRolesSizesHeightSum();
- const qreal availableHeight = size().height();
- if (requiredHeight < availableHeight) {
- // Stretch the first role to use the whole height for the item
- firstRoleSize.rheight() += availableHeight - requiredHeight;
+ // TODO: A proper calculation of the minimum width depends on the implementation
+ // of KItemListWidget. Probably a kind of minimum size-hint should be introduced
+ // later.
+ const qreal minWidth = m_styleOption.iconSize * 2 + 200;
+ if (firstRoleSize.width() < minWidth) {
+ firstRoleSize.rwidth() = minWidth;
+ }
m_stretchedVisibleRolesSizes.insert(role, firstRoleSize);
}
- dynamicItemSize.setHeight(qMax(requiredHeight, availableHeight));
+ dynamicItemSize.rwidth() = qMax(requiredWidth, availableWidth);
}
+ // TODO: A dynamic item height (dynamicItemSize.height() <= 0)
+ // is not handled currently
+
m_layouter->setItemSize(dynamicItemSize);
if (m_header) {