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)