Browse Source

Added IsItemClicked() helper (#581)

ocornut 9 years ago
parent
commit
ac501102fc
2 changed files with 7 additions and 2 deletions
  1. 6 2
      imgui.cpp
  2. 1 0
      imgui.h

+ 6 - 2
imgui.cpp

@@ -1722,8 +1722,7 @@ bool ImGui::ItemAdd(const ImRect& bb, const ImGuiID* id)
     ImGuiWindow* window = GetCurrentWindow();
     window->DC.LastItemID = id ? *id : 0;
     window->DC.LastItemRect = bb;
-    window->DC.LastItemHoveredAndUsable = false;
-    window->DC.LastItemHoveredRect = false;
+    window->DC.LastItemHoveredAndUsable = window->DC.LastItemHoveredRect = false;
     if (IsClippedEx(bb, id, false))
         return false;
 
@@ -3056,6 +3055,11 @@ bool ImGui::IsItemActive()
     return false;
 }
 
+bool ImGui::IsItemClicked(int mouse_button)
+{
+    return IsMouseClicked(mouse_button) && IsItemHovered();
+}
+
 bool ImGui::IsAnyItemHovered()
 {
     return GImGui->HoveredId != 0 || GImGui->HoveredIdPreviousFrame != 0;

+ 1 - 0
imgui.h

@@ -378,6 +378,7 @@ namespace ImGui
     IMGUI_API bool          IsItemHovered();                                                    // was the last item hovered by mouse?
     IMGUI_API bool          IsItemHoveredRect();                                                // was the last item hovered by mouse? even if another item is active or window is blocked by popup while we are hovering this
     IMGUI_API bool          IsItemActive();                                                     // was the last item active? (e.g. button being held, text field being edited- items that don't interact will always return false)
+    IMGUI_API bool          IsItemClicked(int mouse_button = 0);                                // was the last item clicked? (e.g. button/node just clicked on)
     IMGUI_API bool          IsItemVisible();                                                    // was the last item visible? (aka not out of sight due to clipping/scrolling.)
     IMGUI_API bool          IsAnyItemHovered();
     IMGUI_API bool          IsAnyItemActive();