diff --git a/server/TracyView_ZoneTimeline.cpp b/server/TracyView_ZoneTimeline.cpp index 1ee2c409..34c0c322 100644 --- a/server/TracyView_ZoneTimeline.cpp +++ b/server/TracyView_ZoneTimeline.cpp @@ -60,7 +60,7 @@ int View::DrawGhostLevel( const Vector& vec, bool hover, double pxns, { auto& ev = *it; const auto end = ev.end.Val(); - const auto zsz = std::max( ( end - ev.start.Val() ) * pxns, pxns * 0.5 ); + const auto zsz = std::max( ( std::min( m_vd.zvEnd, end ) - std::max( m_vd.zvStart, ev.start.Val() ) ) * pxns, pxns * 0.5 ); if( zsz < MinVisSize ) { const auto MinVisNs = MinVisSize * nspx; @@ -243,7 +243,7 @@ int View::DrawGhostLevel( const Vector& vec, bool hover, double pxns, else { ImGui::PushClipRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y * 2 ), true ); - DrawTextContrast( draw, wpos + ImVec2( ( ev.start.Val() - m_vd.zvStart ) * pxns, offset ), txtColor, symName ); + DrawTextContrast( draw, wpos + ImVec2( std::max( int64_t( 0 ), ev.start.Val() - m_vd.zvStart ) * pxns, offset ), txtColor, symName ); ImGui::PopClipRect(); } @@ -330,7 +330,7 @@ int View::SkipGhostLevel( const Vector& vec, bool hover, double pxns, { auto& ev = *it; const auto end = ev.end.Val(); - const auto zsz = std::max( ( end - ev.start.Val() ) * pxns, pxns * 0.5 ); + const auto zsz = std::max( ( std::min( m_vd.zvEnd, end ) - std::max( m_vd.zvStart, ev.start.Val() ) ) * pxns, pxns * 0.5 ); if( zsz < MinVisSize ) { const auto MinVisNs = MinVisSize * nspx; @@ -429,7 +429,7 @@ int View::DrawZoneLevel( const V& vec, bool hover, double pxns, int64_t nspx, co { auto& ev = a(*it); const auto end = m_worker.GetZoneEnd( ev ); - const auto zsz = std::max( ( end - ev.Start() ) * pxns, pxns * 0.5 ); + const auto zsz = std::max( ( std::min( m_vd.zvEnd, end ) - std::max( m_vd.zvStart, ev.Start() ) ) * pxns, pxns * 0.5 ); if( zsz < MinVisSize ) { const auto MinVisNs = MinVisSize * nspx; @@ -595,7 +595,7 @@ int View::DrawZoneLevel( const V& vec, bool hover, double pxns, int64_t nspx, co else { ImGui::PushClipRect( wpos + ImVec2( px0, offset ), wpos + ImVec2( px1, offset + tsz.y * 2 ), true ); - DrawTextContrast( draw, wpos + ImVec2( ( ev.Start() - m_vd.zvStart ) * pxns, offset ), 0xFFFFFFFF, zoneName ); + DrawTextContrast( draw, wpos + ImVec2( std::max( int64_t( 0 ), ev.Start() - m_vd.zvStart ) * pxns, offset ), 0xFFFFFFFF, zoneName ); ImGui::PopClipRect(); } @@ -651,7 +651,7 @@ int View::SkipZoneLevel( const V& vec, bool hover, double pxns, int64_t nspx, co { auto& ev = a(*it); const auto end = m_worker.GetZoneEnd( ev ); - const auto zsz = std::max( ( end - ev.Start() ) * pxns, pxns * 0.5 ); + const auto zsz = std::max( ( std::min( m_vd.zvEnd, end ) - std::max( m_vd.zvStart, ev.Start() ) ) * pxns, pxns * 0.5 ); if( zsz < MinVisSize ) { const auto MinVisNs = MinVisSize * nspx;