reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/listview.cpp | 19+++++++++----------
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);