From edae542a48a10350c7688b844e11d89c79070810 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sun, 11 Jul 2021 19:43:51 +0200 Subject: [PATCH] Allow selecting image name for filtering from a list. --- server/TracyView.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 7015e963..45d46af8 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -12580,6 +12580,38 @@ void View::DrawStatistics() ImGui::SameLine(); m_statisticsImageFilter.Draw( ICON_FA_FILTER "###imageFilter", 200 ); ImGui::SameLine(); + if( ImGui::BeginCombo( "###imageCombo", nullptr, ImGuiComboFlags_NoPreview | ImGuiComboFlags_HeightLarge ) ) + { + unordered_flat_set set; + std::vector imgNames; + for( auto& v : m_worker.GetSymbolMap() ) + { + auto it = set.find( v.second.imageName ); + if( it == set.end() ) + { + set.emplace( v.second.imageName ); + } + } + imgNames.reserve( set.size() ); + for( auto& img : set ) + { + imgNames.emplace_back( m_worker.GetString( img ) ); + } + std::sort( imgNames.begin(), imgNames.end(), [] ( const auto& lhs, const auto& rhs ) { return strcmp( lhs, rhs ) < 0; } ); + for( auto& img : imgNames ) + { + bool sel = false; + if( ImGui::Selectable( img, &sel ) ) + { + auto len = std::min( 255, strlen( img ) ); + memcpy( m_statisticsImageFilter.InputBuf, img, len ); + m_statisticsImageFilter.InputBuf[len] = 0; + m_statisticsImageFilter.Build(); + } + } + ImGui::EndCombo(); + } + ImGui::SameLine(); if( ImGui::Button( ICON_FA_BACKSPACE " Clear###image" ) ) { m_statisticsImageFilter.Clear();