Preserve groups order.

This commit is contained in:
Bartosz Taudul 2020-01-20 23:40:07 +01:00
parent 6b3165d3cc
commit 6358b4588d
2 changed files with 5 additions and 1 deletions

View File

@ -9202,7 +9202,7 @@ void View::DrawFindZone()
auto it = m_findZone.groups.find( gid );
if( it == m_findZone.groups.end() )
{
it = m_findZone.groups.emplace( gid, FindZone::Group {} ).first;
it = m_findZone.groups.emplace( gid, FindZone::Group { m_findZone.groupId++ } ).first;
it->second.zones.reserve( 1024 );
}
FindZone::Group* group = &it->second;
@ -9222,6 +9222,7 @@ void View::DrawFindZone()
switch( m_findZone.sortBy )
{
case FindZone::SortBy::Order:
pdqsort_branchless( groups.begin(), groups.end(), []( const auto& lhs, const auto& rhs ) { return lhs->second.id < rhs->second.id; } );
break;
case FindZone::SortBy::Count:
pdqsort_branchless( groups.begin(), groups.end(), []( const auto& lhs, const auto& rhs ) { return lhs->second.zones.size() > rhs->second.zones.size(); } );

View File

@ -407,6 +407,7 @@ private:
struct Group
{
uint16_t id;
Vector<short_ptr<ZoneEvent>> zones;
int64_t time = 0;
};
@ -416,6 +417,7 @@ private:
std::vector<int16_t> match;
std::map<uint64_t, Group> groups;
size_t processed;
uint16_t groupId;
int selMatch = 0;
uint64_t selGroup = Unselected;
char pattern[1024] = {};
@ -480,6 +482,7 @@ private:
ResetSelection();
groups.clear();
processed = 0;
groupId = 0;
selCs = 0;
selGroup = Unselected;
}