From 08e20ae4653a603ebc581c8900a4fe90f3101697 Mon Sep 17 00:00:00 2001 From: omar Date: Fri, 5 Jan 2018 15:33:24 +0100 Subject: [PATCH] Internals: Reintroducing LastActiveIdTimer because it is useful and to reduce merge conflicts. (#1537) --- imgui.cpp | 8 ++++++++ imgui_internal.h | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/imgui.cpp b/imgui.cpp index 3794e6d66..4aa51240f 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -2115,7 +2115,14 @@ void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window) ImGuiContext& g = *GImGui; g.ActiveIdIsJustActivated = (g.ActiveId != id); if (g.ActiveIdIsJustActivated) + { g.ActiveIdTimer = 0.0f; + if (id != 0) + { + g.LastActiveId = id; + g.LastActiveIdTimer = 0.0f; + } + } g.ActiveId = id; g.ActiveIdAllowNavDirFlags = 0; g.ActiveIdAllowOverlap = false; @@ -3568,6 +3575,7 @@ void ImGui::NewFrame() ClearActiveID(); if (g.ActiveId) g.ActiveIdTimer += g.IO.DeltaTime; + g.LastActiveIdTimer += g.IO.DeltaTime; g.ActiveIdPreviousFrame = g.ActiveId; g.ActiveIdIsAlive = false; g.ActiveIdIsJustActivated = false; diff --git a/imgui_internal.h b/imgui_internal.h index 96824654c..5c441706b 100644 --- a/imgui_internal.h +++ b/imgui_internal.h @@ -627,6 +627,8 @@ struct ImGuiContext ImVec2 ActiveIdClickOffset; // Clicked offset from upper-left corner, if applicable (currently only set by ButtonBehavior) ImGuiWindow* ActiveIdWindow; ImGuiInputSource ActiveIdSource; // Activating with mouse or nav (gamepad/keyboard) + ImGuiID LastActiveId; // Store the last non-zero ActiveId, useful for animation. + float LastActiveIdTimer; // Store the last non-zero ActiveId timer since the beginning of activation, useful for animation. ImGuiWindow* MovingWindow; // Track the window we clicked on (in order to preserve focus). The actually window that is moved is generally MovingWindow->RootWindow. ImVector ColorModifiers; // Stack for PushStyleColor()/PopStyleColor() ImVector StyleModifiers; // Stack for PushStyleVar()/PopStyleVar() @@ -762,6 +764,8 @@ struct ImGuiContext ActiveIdClickOffset = ImVec2(-1,-1); ActiveIdWindow = NULL; ActiveIdSource = ImGuiInputSource_None; + LastActiveId = 0; + LastActiveIdTimer = 0.0f; MovingWindow = NULL; NextTreeNodeOpenVal = false; NextTreeNodeOpenCond = 0;