ButtonBehavior: Tidying up.

This commit is contained in:
omar 2017-09-28 19:47:45 +02:00
parent 4b4e455c40
commit dd0855de5c

View File

@ -6589,25 +6589,30 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool
} }
bool held = false; bool held = false;
if (g.ActiveId == id && g.ActiveIdSource == ImGuiInputSource_Mouse) if (g.ActiveId == id)
{ {
if (g.IO.MouseDown[0]) if (g.ActiveIdSource == ImGuiInputSource_Mouse)
{ {
held = true; if (g.IO.MouseDown[0])
{
held = true;
}
else
{
if (hovered && (flags & ImGuiButtonFlags_PressedOnClickRelease))
if (!((flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[0] >= g.IO.KeyRepeatDelay)) // Repeat mode trumps <on release>
pressed = true;
ClearActiveID();
}
if (!(flags & ImGuiButtonFlags_NoNavOverride))
g.NavDisableHighlight = true;
} }
else else if (g.ActiveIdSource == ImGuiInputSource_Nav)
{ {
if (hovered && (flags & ImGuiButtonFlags_PressedOnClickRelease)) if (!IsNavInputDown(ImGuiNavInput_PadActivate))
if (!((flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[0] >= g.IO.KeyRepeatDelay)) // Repeat mode trumps <on release> ClearActiveID();
pressed = true;
ClearActiveID();
} }
if (!(flags & ImGuiButtonFlags_NoNavOverride))
g.NavDisableHighlight = true;
} }
if (g.ActiveId == id && g.ActiveIdSource == ImGuiInputSource_Nav)
if (!IsNavInputDown(ImGuiNavInput_PadActivate))
ClearActiveID();
// AllowOverlap mode (rarely used) requires previous frame HoveredId to be null or to match. This allows using patterns where a later submitted widget overlaps a previous one. // AllowOverlap mode (rarely used) requires previous frame HoveredId to be null or to match. This allows using patterns where a later submitted widget overlaps a previous one.
if (hovered && (flags & ImGuiButtonFlags_AllowOverlapMode) && (g.HoveredIdPreviousFrame != id && g.HoveredIdPreviousFrame != 0)) if (hovered && (flags & ImGuiButtonFlags_AllowOverlapMode) && (g.HoveredIdPreviousFrame != id && g.HoveredIdPreviousFrame != 0))