fix bug that wrong listbox selection after sorting

This commit is contained in:
Jinhao 2018-01-13 13:08:43 +08:00
parent c80b4ce484
commit 08077a9845
2 changed files with 6 additions and 6 deletions

View File

@ -1,7 +1,7 @@
/**
* A List Box Implementation
* Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2017 Jinhao(cnjinhao@hotmail.com)
* Copyright(C) 2003-2018 Jinhao(cnjinhao@hotmail.com)
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at

View File

@ -1,7 +1,7 @@
/*
* A List Box Implementation
* Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2017 Jinhao(cnjinhao@hotmail.com)
* Copyright(C) 2003-2018 Jinhao(cnjinhao@hotmail.com)
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
@ -1586,7 +1586,7 @@ namespace nana
return pairs;
}
bool select_for_all(bool sel, const index_pair& except = index_pair{npos, npos})
bool select_for_all(bool sel, const index_pair& except_abs = index_pair{npos, npos})
{
bool changed = false;
index_pair pos;
@ -1595,7 +1595,7 @@ namespace nana
pos.item = 0;
for(auto & m : cat.items)
{
if (except != pos)
if (except_abs != pos)
{
if (m.flags.selected != sel)
{
@ -4150,12 +4150,12 @@ namespace nana
//Unselects all selected items if the current item is not selected before selecting.
auto selected = lister.pick_items(true);
if (selected.cend() == std::find(selected.cbegin(), selected.cend(), item_pos))
lister.select_for_all(false, item_pos);
lister.select_for_all(false, abs_item_pos);
}
else
{
//Unselects all selected items except current item if right button clicked.
lister.select_for_all(false, item_pos); //cancel all selections
lister.select_for_all(false, abs_item_pos); //cancel all selections
}
}
}