From 5ce01c864f4ab9848a54ee982f6ac18e63f04773 Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Sat, 29 Aug 2015 21:50:16 +0200 Subject: Only store modified columns widths after the mouse button was released 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 | 2 ++ src/kitemviews/kitemlistheader.h | 7 +++++++ src/kitemviews/private/kitemlistheaderwidget.cpp | 8 ++++++++ src/kitemviews/private/kitemlistheaderwidget.h | 7 +++++++ 4 files changed, 24 insertions(+) (limited to 'src/kitemviews') diff --git a/src/kitemviews/kitemlistheader.cpp b/src/kitemviews/kitemlistheader.cpp index a3fa14d35..935961a8b 100644 --- a/src/kitemviews/kitemlistheader.cpp +++ b/src/kitemviews/kitemlistheader.cpp @@ -83,5 +83,7 @@ KItemListHeader::KItemListHeader(KItemListView* listView) : connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChanged, this, &KItemListHeader::columnWidthChanged); + connect(m_headerWidget, &KItemListHeaderWidget::columnWidthChangeFinished, + this, &KItemListHeader::columnWidthChangeFinished); } diff --git a/src/kitemviews/kitemlistheader.h b/src/kitemviews/kitemlistheader.h index cc2b74793..76c420559 100644 --- a/src/kitemviews/kitemlistheader.h +++ b/src/kitemviews/kitemlistheader.h @@ -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); diff --git a/src/kitemviews/private/kitemlistheaderwidget.cpp b/src/kitemviews/private/kitemlistheaderwidget.cpp index 45ce4e759..cc11e19da 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.cpp +++ b/src/kitemviews/private/kitemlistheaderwidget.cpp @@ -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); } } diff --git a/src/kitemviews/private/kitemlistheaderwidget.h b/src/kitemviews/private/kitemlistheaderwidget.h index 307def74d..2a80c205d 100644 --- a/src/kitemviews/private/kitemlistheaderwidget.h +++ b/src/kitemviews/private/kitemlistheaderwidget.h @@ -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. */ -- cgit v1.3