|
@@ -211,7 +211,7 @@ static void ShowDemoWindowInputs();
|
|
static void HelpMarker(const char* desc)
|
|
static void HelpMarker(const char* desc)
|
|
{
|
|
{
|
|
ImGui::TextDisabled("(?)");
|
|
ImGui::TextDisabled("(?)");
|
|
- if (ImGui::IsItemHovered(ImGuiHoveredFlags_DelayShort) && ImGui::BeginTooltip())
|
|
|
|
|
|
+ if (ImGui::BeginItemTooltip())
|
|
{
|
|
{
|
|
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
|
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
|
|
ImGui::TextUnformatted(desc);
|
|
ImGui::TextUnformatted(desc);
|
|
@@ -626,48 +626,8 @@ static void ShowDemoWindowWidgets()
|
|
ImGui::SameLine();
|
|
ImGui::SameLine();
|
|
ImGui::Text("%d", counter);
|
|
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");
|
|
ImGui::LabelText("label", "Value");
|
|
|
|
|
|
@@ -802,6 +762,73 @@ static void ShowDemoWindowWidgets()
|
|
ImGui::TreePop();
|
|
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.
|
|
// Testing ImGuiOnceUponAFrame helper.
|
|
//static ImGuiOnceUponAFrame once;
|
|
//static ImGuiOnceUponAFrame once;
|
|
//for (int i = 0; i < 5; i++)
|
|
//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 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);
|
|
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);
|
|
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::BeginItemTooltip())
|
|
{
|
|
{
|
|
float region_sz = 32.0f;
|
|
float region_sz = 32.0f;
|
|
float region_x = io.MousePos.x - pos.x - region_sz * 0.5f;
|
|
float region_x = io.MousePos.x - pos.x - region_sz * 0.5f;
|
|
@@ -2805,7 +2832,7 @@ static void ShowDemoWindowLayout()
|
|
ImGui::PushID(i);
|
|
ImGui::PushID(i);
|
|
ImGui::ListBox("", &selection[i], items, IM_ARRAYSIZE(items));
|
|
ImGui::ListBox("", &selection[i], items, IM_ARRAYSIZE(items));
|
|
ImGui::PopID();
|
|
ImGui::PopID();
|
|
- //if (ImGui::IsItemHovered()) ImGui::SetTooltip("ListBox %d hovered", i);
|
|
|
|
|
|
+ //ImGui::SetItemTooltip("ListBox %d hovered", i);
|
|
}
|
|
}
|
|
ImGui::PopItemWidth();
|
|
ImGui::PopItemWidth();
|
|
|
|
|
|
@@ -2858,8 +2885,7 @@ static void ShowDemoWindowLayout()
|
|
ImGui::SameLine();
|
|
ImGui::SameLine();
|
|
ImGui::Button("EEE");
|
|
ImGui::Button("EEE");
|
|
ImGui::EndGroup();
|
|
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
|
|
// Capture the group size and create widgets using the same size
|
|
ImVec2 size = ImGui::GetItemRectSize();
|
|
ImVec2 size = ImGui::GetItemRectSize();
|
|
@@ -3420,8 +3446,7 @@ static void ShowDemoWindowPopups()
|
|
|
|
|
|
ImGui::Separator();
|
|
ImGui::Separator();
|
|
ImGui::Text("Tooltip here");
|
|
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"))
|
|
if (ImGui::Button("Stacked Popup"))
|
|
ImGui::OpenPopup("another popup");
|
|
ImGui::OpenPopup("another popup");
|
|
@@ -3505,8 +3530,7 @@ static void ShowDemoWindowPopups()
|
|
ImGui::CloseCurrentPopup();
|
|
ImGui::CloseCurrentPopup();
|
|
ImGui::EndPopup();
|
|
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::SameLine();
|
|
ImGui::TextDisabled("(?)");
|
|
ImGui::TextDisabled("(?)");
|
|
- if (ImGui::IsItemHovered() && ImGui::BeginTooltip())
|
|
|
|
|
|
+ if (ImGui::BeginItemTooltip())
|
|
{
|
|
{
|
|
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 50.0f);
|
|
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 50.0f);
|
|
for (int m = 0; m < IM_ARRAYSIZE(policies); m++)
|
|
for (int m = 0; m < IM_ARRAYSIZE(policies); m++)
|