]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Only store modified columns widths after the mouse button was released
authorFrank Reininghaus <frank78ac@googlemail.com>
Sat, 29 Aug 2015 19:50:16 +0000 (21:50 +0200)
committerFrank Reininghaus <frank78ac@googlemail.com>
Thu, 3 Sep 2015 18:26:12 +0000 (20:26 +0200)
This prevents that the new widths are written to disk multiple times in
quick succession, which can make column resizing quite slow.

BUG: 351846
REVIEW: 351846
FIXED-IN: 15.08.1

src/kitemviews/kitemlistheader.cpp
src/kitemviews/kitemlistheader.h
src/kitemviews/private/kitemlistheaderwidget.cpp
src/kitemviews/private/kitemlistheaderwidget.h
src/views/dolphinview.cpp
src/views/dolphinview.h

index a3fa14d357a0418f514b7cf3e10ae87ba78406da..935961a8bc650ef9592bfa01f8b105194e86bc2b 100644 (file)
@@ -83,5 +83,7 @@ KItemListHeader::KItemListHeader(KItemListView* listView) :
 
     connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged,
             this, &KItemListHeader::columnWidthChanged);
+    connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChangeFinished,
+            this, &KItemListHeader::columnWidthChangeFinished);
 }
 
index cc2b747939d66b1ce921250df07788373e57dda2..76c4205590161628fad1933b1da617a133eb541b 100644 (file)
@@ -79,6 +79,13 @@ signals:
                             qreal currentWidth,
                             qreal previousWidth);
 
+    /**
+     * Is emitted if the user has released the mouse button after adjusting the
+     * width of a visible role.
+     */
+    void columnWidthChangeFinished(const QByteArray& role,
+                                   qreal currentWidth);
+
 private:
     KItemListHeader(KItemListView* listView);
 
index 45ce4e7590c8528ebfbb5ceb4790d0b0252178bd..cc11e19da3ddb384f1c97296566bbae03d8efbbc 100644 (file)
@@ -232,6 +232,13 @@ void KItemListHeaderWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
         break;
     }
 
+    case ResizeRoleOperation: {
+        const QByteArray pressedRole = m_columns[m_pressedRoleIndex];
+        const qreal currentWidth = m_columnWidths.value(pressedRole);
+        emit columnWidthChangeFinished(pressedRole, currentWidth);
+        break;
+    }
+
     case MoveRoleOperation:
         m_movingRole.pixmap = QPixmap();
         m_movingRole.x = 0;
@@ -337,6 +344,7 @@ void KItemListHeaderWidget::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* even
         qreal currentWidth = columnWidth(role);
 
         emit columnWidthChanged(role, currentWidth, previousWidth);
+        emit columnWidthChangeFinished(role, currentWidth);
     }
 }
 
index 307def74d0a0e4be808e6053c09081c09add215a..2a80c205dd1fa52c082943f6b787b71a268c178d 100644 (file)
@@ -75,6 +75,13 @@ signals:
                             qreal currentWidth,
                             qreal previousWidth);
 
+    /**
+     * Is emitted if the user has released the mouse button after adjusting the
+     * width of a visible role.
+     */
+    void columnWidthChangeFinished(const QByteArray& role,
+                                   qreal currentWidth);
+
     /**
      * Is emitted if the position of the column has been changed.
      */
index d3023585aefa05a5a292fcbc6c0a9e9ef69e4e39..07b40dceb039cca26fb815072571191921f37d5b 100644 (file)
@@ -177,8 +177,8 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
             this, &DolphinView::slotVisibleRolesChangedByHeader);
     connect(m_view, &DolphinItemListView::roleEditingCanceled,
             this, &DolphinView::slotRoleEditingCanceled);
-    connect(m_view->header(), &KItemListHeader::columnWidthChanged,
-            this, &DolphinView::slotHeaderColumnWidthChanged);
+    connect(m_view->header(), &KItemListHeader::columnWidthChangeFinished,
+            this, &DolphinView::slotHeaderColumnWidthChangeFinished);
 
     KItemListSelectionManager* selectionManager = controller->selectionManager();
     connect(selectionManager, &KItemListSelectionManager::selectionChanged,
@@ -971,10 +971,8 @@ void DolphinView::slotHeaderContextMenuRequested(const QPointF& pos)
     delete menu;
 }
 
-void DolphinView::slotHeaderColumnWidthChanged(const QByteArray& role, qreal current, qreal previous)
+void DolphinView::slotHeaderColumnWidthChangeFinished(const QByteArray& role, qreal current)
 {
-    Q_UNUSED(previous);
-
     const QList<QByteArray> visibleRoles = m_view->visibleRoles();
 
     ViewProperties props(viewPropertiesUrl());
index 24b560f1005c74941cc23951d00622cf65c8f973..d1a5d5005f81bfc07dcb62bfc38b3d0ac06a5f11 100644 (file)
@@ -566,7 +566,7 @@ private slots:
     void slotItemContextMenuRequested(int index, const QPointF& pos);
     void slotViewContextMenuRequested(const QPointF& pos);
     void slotHeaderContextMenuRequested(const QPointF& pos);
-    void slotHeaderColumnWidthChanged(const QByteArray& role, qreal current, qreal previous);
+    void slotHeaderColumnWidthChangeFinished(const QByteArray& role, qreal current);
     void slotItemHovered(int index);
     void slotItemUnhovered(int index);
     void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event);