Combo: Cleaned up, removed unnecessary code (looks like this part went untouched for a long time!).
diff --git a/imgui.cpp b/imgui.cpp
index 5faff4f..2ac7d20 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -8632,7 +8632,10 @@
return false;
const float arrow_size = SmallSquareSize();
- const bool hovered = IsHovered(frame_bb, id);
+
+ bool hovered, held;
+ bool pressed = ButtonBehavior(frame_bb, id, &hovered, &held);
+
bool popup_open = IsPopupOpen(id);
const ImRect value_bb(frame_bb.Min, frame_bb.Max - ImVec2(arrow_size, 0.0f));
@@ -8646,28 +8649,10 @@
if (label_size.x > 0)
RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label);
- bool popup_toggled = false;
- if (hovered)
+ if (pressed && !popup_open)
{
- SetHoveredID(id);
- if (g.IO.MouseClicked[0])
- {
- ClearActiveID();
- popup_toggled = true;
- }
- }
- if (popup_toggled)
- {
- if (popup_open)
- {
- ClosePopup(id);
- }
- else
- {
- FocusWindow(window);
- OpenPopupEx(id, false);
- }
- popup_open = !popup_open;
+ OpenPopupEx(id, false);
+ popup_open = true;
}
if (!popup_open)