@ -211,7 +211,7 @@ static void ShowDemoWindowInputs();
static void HelpMarker ( const char * desc )
{
ImGui : : TextDisabled ( " (?) " ) ;
if ( ImGui : : IsItemHovered ( ImGuiHoveredFlags_DelayShort ) & & ImGui : : Begin Tooltip( ) )
if ( ImGui : : BeginItem Tooltip( ) )
{
ImGui : : PushTextWrapPos ( ImGui : : GetFontSize ( ) * 35.0f ) ;
ImGui : : TextUnformatted ( desc ) ;
@ -626,48 +626,8 @@ static void ShowDemoWindowWidgets()
ImGui : : SameLine ( ) ;
ImGui : : Text ( " %d " , counter ) ;
{
// Tooltips
IMGUI_DEMO_MARKER ( " Widgets/Basic/Tooltips " ) ;
ImGui : : AlignTextToFramePadding ( ) ;
ImGui : : Text ( " Tooltips: " ) ;
ImGui : : SameLine ( ) ;
ImGui : : Button ( " Basic " ) ;
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " I am a tooltip " ) ;
ImGui : : SameLine ( ) ;
ImGui : : Button ( " Fancy " ) ;
if ( ImGui : : IsItemHovered ( ) & & ImGui : : BeginTooltip ( ) )
{
ImGui : : Text ( " I am a fancy tooltip " ) ;
static float arr [ ] = { 0.6f , 0.1f , 1.0f , 0.5f , 0.92f , 0.1f , 0.2f } ;
ImGui : : PlotLines ( " Curve " , arr , IM_ARRAYSIZE ( arr ) ) ;
ImGui : : Text ( " Sin(time) = %f " , sinf ( ( float ) ImGui : : GetTime ( ) ) ) ;
ImGui : : EndTooltip ( ) ;
}
// Showcase use of ImGuiHoveredFlags_ForTooltip which is an alias for ImGuiHoveredFlags_DelayNormal + ImGuiHoveredFlags_Stationary.
// - ImGuiHoveredFlags_DelayNormal requires an hovering delay (default to 0.40 sec)
// - ImGuiHoveredFlags_Stationary requires mouse to be stationary (default to 0.15 sec) at least once on a new item.
// We show two items to showcase how the main delay is by default shared between items,
// so once in "tooltip mode" moving to another tooltip only requires the stationary delay.
ImGui : : SameLine ( ) ;
ImGui : : Button ( " Delayed1 " ) ;
if ( ImGui : : IsItemHovered ( ImGuiHoveredFlags_ForTooltip ) )
ImGui : : SetTooltip ( " I am a tooltip with a delay. " ) ;
ImGui : : SameLine ( ) ;
ImGui : : Button ( " Delayed2 " ) ;
if ( ImGui : : IsItemHovered ( ImGuiHoveredFlags_ForTooltip ) )
ImGui : : SetTooltip ( " I am another tooltip with a delay. " ) ;
ImGui : : SameLine ( ) ;
HelpMarker (
" Tooltip are created by using the IsItemHovered() function over any kind of item. " ) ;
}
ImGui : : Button ( " Tooltip " ) ;
ImGui : : SetItemTooltip ( " I am a tooltip " ) ;
ImGui : : LabelText ( " label " , " Value " ) ;
@ -802,6 +762,73 @@ static void ShowDemoWindowWidgets()
ImGui : : TreePop ( ) ;
}
IMGUI_DEMO_MARKER ( " Widgets/Tooltips " ) ;
if ( ImGui : : TreeNode ( " Tooltips " ) )
{
// Tooltips are windows following the mouse. They do not take focus away.
ImGui : : SeparatorText ( " General " ) ;
// Typical use cases:
// - Short-form (text only): SetItemTooltip("Hello");
// - Short-form (any contents): if (BeginItemTooltip()) { Text("Hello"); EndTooltip(); }
// - Full-form (text only): if (IsItemHovered(...)) { SetTooltip("Hello"); }
// - Full-form (any contents): if (IsItemHovered(...) && BeginTooltip()) { Text("Hello"); EndTooltip(); }
HelpMarker (
" Tooltip are typically created by using the IsItemHovered() + SetTooltip() functions over any kind of item. \n \n "
" We provide a helper SetItemTooltip() function to perform the two with standards flags. " ) ;
ImVec2 sz = ImVec2 ( - FLT_MIN , 0.0f ) ;
ImGui : : Button ( " Basic " , sz ) ;
ImGui : : SetItemTooltip ( " I am a tooltip " ) ;
ImGui : : Button ( " Fancy " , sz ) ;
if ( ImGui : : BeginItemTooltip ( ) )
{
ImGui : : Text ( " I am a fancy tooltip " ) ;
static float arr [ ] = { 0.6f , 0.1f , 1.0f , 0.5f , 0.92f , 0.1f , 0.2f } ;
ImGui : : PlotLines ( " Curve " , arr , IM_ARRAYSIZE ( arr ) ) ;
ImGui : : Text ( " Sin(time) = %f " , sinf ( ( float ) ImGui : : GetTime ( ) ) ) ;
ImGui : : EndTooltip ( ) ;
}
ImGui : : SeparatorText ( " Custom " ) ;
// Showcase NOT relying on a IsItemHovered() to emit a tooltip.
static bool always_on = false ;
ImGui : : Checkbox ( " Always On " , & always_on ) ;
if ( always_on )
ImGui : : SetTooltip ( " I am following you around. " ) ;
// The following examples are passed for documentation purpose but may not be useful to most users.
// Passing ImGuiHoveredFlags_Tooltip to IsItemHovered() will pull ImGuiHoveredFlags flags values from
// 'style.HoverFlagsForTooltipMouse' or 'style.HoverFlagsForTooltipNav' depending on whether mouse or gamepad/keyboard is being used.
// With default settings, ImGuiHoveredFlags_Tooltip is equivalent to ImGuiHoveredFlags_DelayShort + ImGuiHoveredFlags_Stationary.
ImGui : : Button ( " Manual " , sz ) ;
if ( ImGui : : IsItemHovered ( ImGuiHoveredFlags_ForTooltip ) )
ImGui : : SetTooltip ( " I am a manually emitted tooltip " ) ;
ImGui : : Button ( " DelayNone " , sz ) ;
if ( ImGui : : IsItemHovered ( ImGuiHoveredFlags_DelayNone ) )
ImGui : : SetTooltip ( " I am a tooltip with no delay. " ) ;
ImGui : : Button ( " DelayShort " , sz ) ;
if ( ImGui : : IsItemHovered ( ImGuiHoveredFlags_DelayShort | ImGuiHoveredFlags_NoSharedDelay ) )
ImGui : : SetTooltip ( " I am a tooltip with a short delay (%0.2f sec). " , ImGui : : GetStyle ( ) . HoverDelayShort ) ;
ImGui : : Button ( " DelayLong " , sz ) ;
if ( ImGui : : IsItemHovered ( ImGuiHoveredFlags_DelayNormal | ImGuiHoveredFlags_NoSharedDelay ) )
ImGui : : SetTooltip ( " I am a tooltip with a long delay (%0.2f sec) " , ImGui : : GetStyle ( ) . HoverDelayNormal ) ;
ImGui : : Button ( " Stationary " , sz ) ;
if ( ImGui : : IsItemHovered ( ImGuiHoveredFlags_Stationary ) )
ImGui : : SetTooltip ( " I am a tooltip requiring mouse to be stationary before activating. " ) ;
ImGui : : TreePop ( ) ;
}
// Testing ImGuiOnceUponAFrame helper.
//static ImGuiOnceUponAFrame once;
//for (int i = 0; i < 5; i++)
@ -1067,7 +1094,7 @@ static void ShowDemoWindowWidgets()
ImVec4 tint_col = use_text_color_for_tint ? ImGui : : GetStyleColorVec4 ( ImGuiCol_Text ) : ImVec4 ( 1.0f , 1.0f , 1.0f , 1.0f ) ; // No tint
ImVec4 border_col = ImGui : : GetStyleColorVec4 ( ImGuiCol_Border ) ;
ImGui : : Image ( my_tex_id , ImVec2 ( my_tex_w , my_tex_h ) , uv_min , uv_max , tint_col , border_col ) ;
if ( ImGui : : IsItemHovered ( ) & & ImGui : : BeginTooltip ( ) )
if ( ImGui : : BeginItem Tooltip ( ) )
{
float region_sz = 32.0f ;
float region_x = io . MousePos . x - pos . x - region_sz * 0.5f ;
@ -2805,7 +2832,7 @@ static void ShowDemoWindowLayout()
ImGui : : PushID ( i ) ;
ImGui : : ListBox ( " " , & selection [ i ] , items , IM_ARRAYSIZE ( items ) ) ;
ImGui : : PopID ( ) ;
//if (ImGui::IsItemHovered()) ImGui::Set Tooltip("ListBox %d hovered", i);
//ImGui::SetItem Tooltip("ListBox %d hovered", i);
}
ImGui : : PopItemWidth ( ) ;
@ -2858,8 +2885,7 @@ static void ShowDemoWindowLayout()
ImGui : : SameLine ( ) ;
ImGui : : Button ( " EEE " ) ;
ImGui : : EndGroup ( ) ;
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " First group hovered " ) ;
ImGui : : SetItemTooltip ( " First group hovered " ) ;
}
// Capture the group size and create widgets using the same size
ImVec2 size = ImGui : : GetItemRectSize ( ) ;
@ -3420,8 +3446,7 @@ static void ShowDemoWindowPopups()
ImGui : : Separator ( ) ;
ImGui : : Text ( " Tooltip here " ) ;
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " I am a tooltip over a popup " ) ;
ImGui : : SetItemTooltip ( " I am a tooltip over a popup " ) ;
if ( ImGui : : Button ( " Stacked Popup " ) )
ImGui : : OpenPopup ( " another popup " ) ;
@ -3505,8 +3530,7 @@ static void ShowDemoWindowPopups()
ImGui : : CloseCurrentPopup ( ) ;
ImGui : : EndPopup ( ) ;
}
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " Right-click to open popup " ) ;
ImGui : : SetItemTooltip ( " Right-click to open popup " ) ;
}
}
@ -3758,7 +3782,7 @@ static void EditTableSizingFlags(ImGuiTableFlags* p_flags)
}
ImGui : : SameLine ( ) ;
ImGui : : TextDisabled ( " (?) " ) ;
if ( ImGui : : IsItemHovered ( ) & & ImGui : : BeginTooltip ( ) )
if ( ImGui : : BeginItem Tooltip ( ) )
{
ImGui : : PushTextWrapPos ( ImGui : : GetFontSize ( ) * 50.0f ) ;
for ( int m = 0 ; m < IM_ARRAYSIZE ( policies ) ; m + + )