From e1e2752dcbfb1160b355d83bbc9301e36dcacd20 Mon Sep 17 00:00:00 2001 From: ocornut Date: Fri, 13 May 2016 10:50:59 +0200 Subject: [PATCH] Fixed repeating button behavior triggering twice, typically affect the +/- of InputInt/InputFloat and user repeating buttons (#656) + Took note of further work Broken in 547f34cf22640526b63f02f50c73ef9409e8acab --- imgui.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/imgui.cpp b/imgui.cpp index 9137f450..bee8bb79 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -5357,7 +5357,11 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool pressed = true; SetActiveID(0); } - if ((flags & ImGuiButtonFlags_Repeat) && g.ActiveId == id && ImGui::IsMouseClicked(0, true)) + + // 'Repeat' mode acts when held regardless of _PressedOn flags + // FIXME: Need to clarify the repeat behavior with those differents flags. Currently the typical PressedOnClickRelease+Repeat will add an extra click on final release (hardly noticeable with repeat rate, but technically an issue) + // Relies on repeat behavior of IsMouseClicked() but we may as well do it ourselves if we end up exposing finer RepeatDelay/RepeatRate settings. + if ((flags & ImGuiButtonFlags_Repeat) && g.ActiveId == id && g.IO.MouseDownDuration[0] > 0.0f && ImGui::IsMouseClicked(0, true)) pressed = true; } }