VGUI Tooltip: Difference between revisions
No edit summary |
m (Nesciuse moved page VGUI Tooltip/en to VGUI Tooltip without leaving a redirect: Move en subpage to basepage) |
||
(28 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{LanguageBar}} | |||
{{Dead end|date=January 2024}} | |||
[[ | |||
A tooltip is a vgui2 element defined in the <code>vgui_controls</code> library, in the file <code>Tooltip.cpp</code>. Tooltips are available in all {{src|3.1}} games. Tooltips are useful for displaying additional information about something, without taking up any extra space. | |||
[[File:Tooltip.jpg|thumb|This screenshot was taken from the mod FPS Dota. The tooltip is displaying additonal information about the hero's strength attribute.]] | |||
== Example Usage == | == Example Usage == | ||
* Before using tooltips, be sure to include <code>vgui_controls/tooltip.h</code>. | |||
* Most [[VGUI]] elements have tooltips associated with them. | |||
* You can call <code>control->GetTooltip()</code> to get the control's tooltip, and then you can call <code>tooltip->SetText</code> to set the tooltip's text. | |||
* Alternatively, you can also set the text of a tooltip in a resource file using the keyvalue <code>tooltiptext</code>. | |||
"StrengthLabel" | |||
{ | |||
"ControlName" "Label" | |||
"fieldName" "StrengthLabel" | |||
"xpos" "185" | |||
"ypos" "2" | |||
"tooltiptext" "Each point increases hit points by 19. Each point increases hit point regen." | |||
"wide" "100" | |||
"tall" "20" | |||
"autoResize" "0" | |||
"pinCorner" "0" | |||
"visible" "1" | |||
"enabled" "1" | |||
"tabPosition" "0" | |||
"labelText" "Strength:" | |||
"textAlignment" "west" | |||
"dulltext" "0" | |||
"brighttext" "0" | |||
"wrap" "0" | |||
} | |||
= | == Known Problems With Tooltips == | ||
Calling Tooltip::SetText on a tooltip when a tooltip window is visible changes the text for the visible tooltip window. Make sure that you check to make sure no tooltip windows are currently open before calling Tooltip::SetText. | Calling <code>Tooltip::SetText</code> on a tooltip when a tooltip window is visible changes the text for the visible tooltip window. Make sure that you check to make sure no tooltip windows are currently open before calling <code>Tooltip::SetText</code>. | ||
void Tooltip::SetText(const char *text) | void Tooltip::SetText(const char *text) | ||
Line 36: | Line 63: | ||
} | } | ||
The code above was taken from line 89 of tooltip.cpp | The code above was taken from line 89 of <code>tooltip.cpp</code>. | ||
{{valve|4}} uses a static handler for the current displayed tooltip window (declared on line 28 of <code>tooltip.cpp</code>), <code>static vgui::DHANDLE< TextEntry > s_TooltipWindow;</code>. | |||
Ii isn't clear why, but as you can see in the code above, towards the end of the function <code>Tooltip::SetText</code>, it changes the text of the active tooltip window. Valve needs to remove this from their code to fix this bug. | |||
[[Category:VGUI Controls]] | [[Category:VGUI Controls|T]] |
Latest revision as of 11:54, 12 July 2024





January 2024
A tooltip is a vgui2 element defined in the vgui_controls
library, in the file Tooltip.cpp
. Tooltips are available in all Source games. Tooltips are useful for displaying additional information about something, without taking up any extra space.
Example Usage
- Before using tooltips, be sure to include
vgui_controls/tooltip.h
. - Most VGUI elements have tooltips associated with them.
- You can call
control->GetTooltip()
to get the control's tooltip, and then you can calltooltip->SetText
to set the tooltip's text. - Alternatively, you can also set the text of a tooltip in a resource file using the keyvalue
tooltiptext
.
"StrengthLabel" { "ControlName" "Label" "fieldName" "StrengthLabel" "xpos" "185" "ypos" "2" "tooltiptext" "Each point increases hit points by 19. Each point increases hit point regen." "wide" "100" "tall" "20" "autoResize" "0" "pinCorner" "0" "visible" "1" "enabled" "1" "tabPosition" "0" "labelText" "Strength:" "textAlignment" "west" "dulltext" "0" "brighttext" "0" "wrap" "0" }
Known Problems With Tooltips
Calling Tooltip::SetText
on a tooltip when a tooltip window is visible changes the text for the visible tooltip window. Make sure that you check to make sure no tooltip windows are currently open before calling Tooltip::SetText
.
void Tooltip::SetText(const char *text) { _isDirty = true; if (!text) { text = ""; } if (m_Text.Size() > 0) { m_Text.RemoveAll(); } for (unsigned int i = 0; i < strlen(text); i++) { m_Text.AddToTail(text[i]); } m_Text.AddToTail('\0'); if (s_TooltipWindow.Get()) { s_TooltipWindow->SetText(m_Text.Base()); } }
The code above was taken from line 89 of tooltip.cpp
.
Valve uses a static handler for the current displayed tooltip window (declared on line 28 of
tooltip.cpp
), static vgui::DHANDLE< TextEntry > s_TooltipWindow;
.
Ii isn't clear why, but as you can see in the code above, towards the end of the function Tooltip::SetText
, it changes the text of the active tooltip window. Valve needs to remove this from their code to fix this bug.