diff --git a/src/game/client/components/tooltips.cpp b/src/game/client/components/tooltips.cpp index 8f42257e0..fb413efb4 100644 --- a/src/game/client/components/tooltips.cpp +++ b/src/game/client/components/tooltips.cpp @@ -33,13 +33,17 @@ void CTooltips::DoToolTip(const void *pID, const CUIRect *pNearRect, const char const auto result = m_Tooltips.emplace(ID, CTooltip{ *pNearRect, pText, - WidthHint}); + WidthHint, + false}); CTooltip &Tooltip = result.first->second; if(!result.second) { Tooltip.m_Rect = *pNearRect; // update in case of window resize } + + Tooltip.m_OnScreen = true; + if(UI()->MouseInside(&Tooltip.m_Rect)) { SetActiveTooltip(Tooltip); @@ -54,10 +58,14 @@ void CTooltips::OnRender() if(!UI()->MouseInside(&Tooltip.m_Rect)) { + Tooltip.m_OnScreen = false; ClearActiveTooltip(); return; } + if(!Tooltip.m_OnScreen) + return; + // Delay tooltip until 1 second passed. if(HoverTime > time_get() - time_freq()) return; @@ -100,5 +108,6 @@ void CTooltips::OnRender() RenderTools()->DrawUIRect(&Rect, ColorRGBA(0.2, 0.2, 0.2, 0.80f), CUI::CORNER_ALL, 5.0f); Rect.Margin(2.0f, &Rect); UI()->DoLabel(&Rect, Tooltip.m_pText, 14.0f, TEXTALIGN_LEFT); + Tooltip.m_OnScreen = false; } } diff --git a/src/game/client/components/tooltips.h b/src/game/client/components/tooltips.h index 021cd2565..f789262d2 100644 --- a/src/game/client/components/tooltips.h +++ b/src/game/client/components/tooltips.h @@ -13,6 +13,7 @@ struct CTooltip CUIRect m_Rect; const char *m_pText; float m_WidthHint; + bool m_OnScreen; // used to know if the tooltip should be rendered. }; /**