VGUI Tooltip: Difference between revisions
No edit summary |
No edit summary |
||
| Line 36: | Line 36: | ||
== Known Problems with Tooltips == | == 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 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. | ||
| Line 70: | Line 69: | ||
I'm not sure 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. | I'm not sure 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. | ||
[[Category:VGUI Controls|T]] | [[Category:VGUI Controls|T]] | ||
Revision as of 21:48, 6 June 2009
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"
- All vgui::Labels have tooltips associated with them.
- You can call label->GetTooltip() to get the label's tooltip, and then you can call tooltip->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;.
I'm not sure 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.
