X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/16d4f059c32899d284b202a26af5236cc899abc8..c8d8556950005dfd96ebdb41d2f43ad90356367c:/src/kitemviews/kitemlistheader.cpp diff --git a/src/kitemviews/kitemlistheader.cpp b/src/kitemviews/kitemlistheader.cpp index 0b94f327b..7b5549c73 100644 --- a/src/kitemviews/kitemlistheader.cpp +++ b/src/kitemviews/kitemlistheader.cpp @@ -19,6 +19,8 @@ #include "kitemlistheader_p.h" +#include +#include #include "kitemmodelbase.h" #include @@ -110,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); @@ -143,11 +151,15 @@ void KItemListHeader::paint(QPainter* painter, const QStyleOptionGraphicsItem* o void KItemListHeader::mousePressEvent(QGraphicsSceneMouseEvent* event) { - event->accept(); - updatePressedRoleIndex(event->pos()); - m_pressedMousePos = event->pos(); - m_roleOperation = isAboveRoleGrip(m_pressedMousePos, m_pressedRoleIndex) ? - ResizeRoleOperation : NoRoleOperation; + if (event->button() & Qt::LeftButton) { + updatePressedRoleIndex(event->pos()); + m_pressedMousePos = event->pos(); + m_roleOperation = isAboveRoleGrip(m_pressedMousePos, m_pressedRoleIndex) ? + ResizeRoleOperation : NoRoleOperation; + event->accept(); + } else { + event->ignore(); + } } void KItemListHeader::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) @@ -164,13 +176,17 @@ void KItemListHeader::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) const int sortRoleIndex = m_visibleRoles.indexOf(sortRole); if (m_pressedRoleIndex == sortRoleIndex) { // Toggle the sort order - const Qt::SortOrder toggled = (m_model->sortOrder() == Qt::AscendingOrder) ? + const Qt::SortOrder previous = m_model->sortOrder(); + const Qt::SortOrder current = (m_model->sortOrder() == Qt::AscendingOrder) ? Qt::DescendingOrder : Qt::AscendingOrder; - m_model->setSortOrder(toggled); + m_model->setSortOrder(current); + emit sortOrderChanged(current, previous); } else { // Change the sort role - const QByteArray sortRole = m_visibleRoles.at(m_pressedRoleIndex); - m_model->setSortRole(sortRole); + const QByteArray previous = m_model->sortRole(); + const QByteArray current = m_visibleRoles.at(m_pressedRoleIndex); + m_model->setSortRole(current); + emit sortRoleChanged(current, previous); } } @@ -334,10 +350,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"