Allow zooming to zone from zone info window.

This commit is contained in:
Bartosz Taudul 2017-09-29 22:01:30 +02:00
parent b386e51edc
commit fb80ac9488
2 changed files with 21 additions and 10 deletions

View File

@ -745,6 +745,13 @@ void View::DrawImpl()
DrawZones(); DrawZones();
DrawZoneInfoWindow(); DrawZoneInfoWindow();
ImGui::End(); ImGui::End();
if( m_zvStartNext != 0 )
{
m_zvStart = m_zvStartNext;
m_zvEnd = m_zvEndNext;
m_pause = true;
}
} }
static ImU32 GetFrameColor( uint64_t frameTime ) static ImU32 GetFrameColor( uint64_t frameTime )
@ -1085,13 +1092,6 @@ void View::DrawZones()
offset += ostep * ( depth + 1.2f ); offset += ostep * ( depth + 1.2f );
} }
if( m_zvStartNext != 0 )
{
m_zvStart = m_zvStartNext;
m_zvEnd = m_zvEndNext;
m_pause = true;
}
} }
int View::DrawZoneLevel( const Vector<Event*>& vec, bool hover, double pxns, const ImVec2& wpos, int _offset, int depth ) int View::DrawZoneLevel( const Vector<Event*>& vec, bool hover, double pxns, const ImVec2& wpos, int _offset, int depth )
@ -1240,10 +1240,9 @@ int View::DrawZoneLevel( const Vector<Event*>& vec, bool hover, double pxns, con
ImGui::EndTooltip(); ImGui::EndTooltip();
if( m_zvStartNext == 0 && ImGui::IsMouseClicked( 2 ) && ev.end - ev.start > 0 ) if( m_zvStartNext == 0 && ImGui::IsMouseClicked( 2 ) )
{ {
m_zvStartNext = ev.start; ZoomToZone( ev );
m_zvEndNext = ev.end;
} }
if( ImGui::IsMouseClicked( 0 ) ) if( ImGui::IsMouseClicked( 0 ) )
{ {
@ -1270,6 +1269,10 @@ void View::DrawZoneInfoWindow()
auto& ev = *m_zoneInfoWindow; auto& ev = *m_zoneInfoWindow;
bool show = true; bool show = true;
ImGui::Begin( "Zone info", &show, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_ShowBorders ); ImGui::Begin( "Zone info", &show, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_ShowBorders );
if( ImGui::Button( "Zoom to zone" ) )
{
ZoomToZone( ev );
}
if( ev.text && ev.text->zoneName ) if( ev.text && ev.text->zoneName )
{ {
ImGui::Text( "Zone name: %s", GetString( ev.text->zoneName ) ); ImGui::Text( "Zone name: %s", GetString( ev.text->zoneName ) );
@ -1297,4 +1300,11 @@ uint32_t View::GetZoneHighlight( const Event& ev )
} }
} }
void View::ZoomToZone( const Event& ev )
{
if( ev.end - ev.start <= 0 ) return;
m_zvStartNext = ev.start;
m_zvEndNext = ev.end;
}
} }

View File

@ -88,6 +88,7 @@ private:
void DrawZoneInfoWindow(); void DrawZoneInfoWindow();
uint32_t GetZoneHighlight( const Event& ev ); uint32_t GetZoneHighlight( const Event& ev );
void ZoomToZone( const Event& ev );
std::string m_addr; std::string m_addr;