+
+ if (m_roleOperation == NoRoleOperation) {
+ // Only a click has been done and no moving or resizing has been started
+ const QByteArray sortRole = m_model->sortRole();
+ const int sortRoleIndex = m_visibleRoles.indexOf(sortRole);
+ if (m_pressedRoleIndex == sortRoleIndex) {
+ // Toggle the sort order
+ const Qt::SortOrder toggled = (m_model->sortOrder() == Qt::AscendingOrder) ?
+ Qt::DescendingOrder : Qt::AscendingOrder;
+ m_model->setSortOrder(toggled);
+ } else {
+ // Change the sort role
+ const QByteArray sortRole = m_visibleRoles.at(m_pressedRoleIndex);
+ m_model->setSortRole(sortRole);
+ }
+ }
+
+ m_pressedRoleIndex = -1;
+ m_roleOperation = NoRoleOperation;
+ update();