commit 4a88277d3ddef4c6c6195f2dacb8141469b696ca
parent e39b7f20e6466c3719425b00a941b5121e3eba75
Author: cfillion <cfillion@users.noreply.github.com>
Date: Fri, 25 Aug 2017 18:58:32 -0400
listview: sort identical columns by row insertion order
Diffstat:
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/src/listview.cpp b/src/listview.cpp
@@ -138,16 +138,18 @@ void ListView::sort()
{
static const auto compare = [](LPARAM aRow, LPARAM bRow, LPARAM param)
{
+ const int indexDiff = aRow - bRow;
+
ListView *view = reinterpret_cast<ListView *>(param);
if(!view->m_sort)
- return (int)(aRow - bRow);
-
- const int column = view->m_sort->column;
+ return indexDiff;
int ret;
+ const int column = view->m_sort->column;
const auto it = view->m_sortFuncs.find(column);
+
if(it != view->m_sortFuncs.end())
ret = it->second((int)aRow, (int)bRow);
else {
@@ -160,13 +162,10 @@ void ListView::sort()
ret = a.compare(b);
}
- switch(view->m_sort->order) {
- case AscendingOrder:
- return ret;
- case DescendingOrder:
- default: // for MSVC
- return -ret;
- }
+ if(view->m_sort->order == DescendingOrder)
+ ret = -ret;
+
+ return ret ? ret : indexDiff;
};
ListView_SortItems(handle(), compare, (LPARAM)this);