]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistview.cpp
kfileitemmodel: sortRoleCompare: allow to sort by access time.
[dolphin.git] / src / kitemviews / kitemlistview.cpp
index 239e399a45b9060701bb4adb5a65177701d12f33..cf590efce7e995b2f75f7396c43982f141ea4584 100644 (file)
@@ -77,7 +77,6 @@ KItemListView::KItemListView(QGraphicsWidget* parent) :
     m_visibleItems(),
     m_visibleGroups(),
     m_visibleCells(),
-    m_sizeHintResolver(nullptr),
     m_layouter(nullptr),
     m_animation(nullptr),
     m_oldScrollOffset(0),
@@ -93,7 +92,8 @@ KItemListView::KItemListView(QGraphicsWidget* parent) :
     m_header(nullptr),
     m_headerWidget(nullptr),
     m_indicatorAnimation(nullptr),
-    m_dropIndicator()
+    m_dropIndicator(),
+    m_sizeHintResolver(nullptr)
 {
     setAcceptHoverEvents(true);
     setAcceptTouchEvents(true);
@@ -601,8 +601,8 @@ void KItemListView::setHeaderVisible(bool visible)
 
         connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged,
                 this, &KItemListView::slotHeaderColumnWidthChanged);
-        connect(m_headerWidget, &KItemListHeaderWidget::leadingPaddingChanged,
-                this, &KItemListView::slotLeadingPaddingChanged);
+        connect(m_headerWidget, &KItemListHeaderWidget::sidePaddingChanged,
+                this, &KItemListView::slotSidePaddingChanged);
         connect(m_headerWidget, &KItemListHeaderWidget::columnMoved,
                 this, &KItemListView::slotHeaderColumnMoved);
         connect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged,
@@ -615,8 +615,8 @@ void KItemListView::setHeaderVisible(bool visible)
     } else if (!visible && m_headerWidget->isVisible()) {
         disconnect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged,
                    this, &KItemListView::slotHeaderColumnWidthChanged);
-        disconnect(m_headerWidget, &KItemListHeaderWidget::leadingPaddingChanged,
-                this, &KItemListView::slotLeadingPaddingChanged);
+        disconnect(m_headerWidget, &KItemListHeaderWidget::sidePaddingChanged,
+                this, &KItemListView::slotSidePaddingChanged);
         disconnect(m_headerWidget, &KItemListHeaderWidget::columnMoved,
                    this, &KItemListView::slotHeaderColumnMoved);
         disconnect(m_headerWidget, &KItemListHeaderWidget::sortOrderChanged,
@@ -1532,7 +1532,7 @@ void KItemListView::slotHeaderColumnWidthChanged(const QByteArray& role,
     doLayout(NoAnimation);
 }
 
-void KItemListView::slotLeadingPaddingChanged(qreal width)
+void KItemListView::slotSidePaddingChanged(qreal width)
 {
     Q_UNUSED(width)
     if (m_headerWidget->automaticColumnResizing()) {
@@ -1858,6 +1858,8 @@ void KItemListView::doLayout(LayoutAnimationHint hint, int changedIndex, int cha
         Q_ASSERT(widget->index() == i);
         widget->setVisible(true);
 
+        bool animateIconResizing = animate;
+
         if (widget->size() != itemBounds.size()) {
             // Resize the widget for the item to the changed size.
             if (animate) {
@@ -1874,11 +1876,13 @@ void KItemListView::doLayout(LayoutAnimationHint hint, int changedIndex, int cha
             } else {
                 widget->resize(itemBounds.size());
             }
+        } else {
+            animateIconResizing = false;
         }
 
         const int newIconSize = widget->styleOption().iconSize;
         if (widget->iconSize() != newIconSize) {
-            if (animate) {
+            if (animateIconResizing) {
                 m_animation->start(widget, KItemListViewAnimation::IconResizeAnimation, newIconSize);
             } else {
                 widget->setIconSize(newIconSize);
@@ -2309,7 +2313,7 @@ QHash<QByteArray, qreal> KItemListView::preferredColumnWidths(const KItemRangeLi
 void KItemListView::applyColumnWidthsFromHeader()
 {
     // Apply the new size to the layouter
-    const qreal requiredWidth = columnWidthsSum() + m_headerWidget->leadingPadding();
+    const qreal requiredWidth = columnWidthsSum() + m_headerWidget->sidePadding();
     const QSizeF dynamicItemSize(qMax(size().width(), requiredWidth),
                                  m_itemSize.height());
     m_layouter->setItemSize(dynamicItemSize);
@@ -2327,7 +2331,7 @@ void KItemListView::updateWidgetColumnWidths(KItemListWidget* widget)
     for (const QByteArray& role : qAsConst(m_visibleRoles)) {
         widget->setColumnWidth(role, m_headerWidget->columnWidth(role));
     }
-    widget->setLeadingPadding(m_headerWidget->leadingPadding());
+    widget->setSidePadding(m_headerWidget->sidePadding());
 }
 
 void KItemListView::updatePreferredColumnWidths(const KItemRangeList& itemRanges)
@@ -2405,7 +2409,9 @@ void KItemListView::applyAutomaticColumnWidths()
     qreal firstColumnWidth = m_headerWidget->columnWidth(firstRole);
     QSizeF dynamicItemSize = m_itemSize;
 
-    qreal requiredWidth = columnWidthsSum() + m_headerWidget->leadingPadding();
+    qreal requiredWidth = columnWidthsSum() + m_headerWidget->sidePadding()
+        + m_headerWidget->sidePadding(); // Adding the padding a second time so we have the same padding symmetrically on both sides of the view.
+        // This improves UX, looks better and increases the chances of users figuring out that the padding area can be used for deselecting and dropping files.
     const qreal availableWidth = size().width();
     if (requiredWidth < availableWidth) {
         // Stretch the first column to use the whole remaining width