|
@@ -394,22 +394,28 @@ CODE
|
|
|
- likewise io.MousePos and GetMousePos() will use OS coordinates.
|
|
|
If you query mouse positions to interact with non-imgui coordinates you will need to offset them, e.g. subtract GetWindowViewport()->Pos.
|
|
|
|
|
|
+ - 2023/02/15 (1.89.4) - moved the optional "courtesy maths operators" implementation from imgui_internal.h in imgui.h.
|
|
|
+ Even though we encourage using your own maths types and operators by setting up IM_VEC2_CLASS_EXTRA,
|
|
|
+ it has been frequently requested by people to use our own. We had an opt-in define which was
|
|
|
+ previously fulfilled in imgui_internal.h. It is now fulfilled in imgui.h. (#6164)
|
|
|
+ - OK: #define IMGUI_DEFINE_MATH_OPERATORS / #include "imgui.h" / #include "imgui_internal.h"
|
|
|
+ - Error: #include "imgui.h" / #define IMGUI_DEFINE_MATH_OPERATORS / #include "imgui_internal.h"
|
|
|
- 2023/02/07 (1.89.3) - backends: renamed "imgui_impl_sdl.cpp" to "imgui_impl_sdl2.cpp" and "imgui_impl_sdl.h" to "imgui_impl_sdl2.h". (#6146) This is in prevision for the future release of SDL3.
|
|
|
- - 2022/10/26 (1.89) - commented out redirecting OpenPopupContextItem() which was briefly the name of OpenPopupOnItemClick() from 1.77 to 1.79.
|
|
|
- - 2022/10/12 (1.89) - removed runtime patching of invalid "%f"/"%0.f" format strings for DragInt()/SliderInt(). This was obsoleted in 1.61 (May 2018). See 1.61 changelog for details.
|
|
|
- - 2022/09/26 (1.89) - renamed and merged keyboard modifiers key enums and flags into a same set. Kept inline redirection enums (will obsolete).
|
|
|
- - ImGuiKey_ModCtrl and ImGuiModFlags_Ctrl -> ImGuiMod_Ctrl
|
|
|
- - ImGuiKey_ModShift and ImGuiModFlags_Shift -> ImGuiMod_Shift
|
|
|
- - ImGuiKey_ModAlt and ImGuiModFlags_Alt -> ImGuiMod_Alt
|
|
|
- - ImGuiKey_ModSuper and ImGuiModFlags_Super -> ImGuiMod_Super
|
|
|
- the ImGuiKey_ModXXX were introduced in 1.87 and mostly used by backends.
|
|
|
- the ImGuiModFlags_XXX have been exposed in imgui.h but not really used by any public api only by third-party extensions.
|
|
|
- exceptionally commenting out the older ImGuiKeyModFlags_XXX names ahead of obsolescence schedule to reduce confusion and because they were not meant to be used anyway.
|
|
|
- - 2022/09/20 (1.89) - ImGuiKey is now a typed enum, allowing ImGuiKey_XXX symbols to be named in debuggers.
|
|
|
- this will require uses of legacy backend-dependent indices to be casted, e.g.
|
|
|
- - with imgui_impl_glfw: IsKeyPressed(GLFW_KEY_A) -> IsKeyPressed((ImGuiKey)GLFW_KEY_A);
|
|
|
- - with imgui_impl_win32: IsKeyPressed('A') -> IsKeyPressed((ImGuiKey)'A')
|
|
|
- - etc. However if you are upgrading code you might well use the better, backend-agnostic IsKeyPressed(ImGuiKey_A) now!
|
|
|
+ - 2022/10/26 (1.89) - commented out redirecting OpenPopupContextItem() which was briefly the name of OpenPopupOnItemClick() from 1.77 to 1.79.
|
|
|
+ - 2022/10/12 (1.89) - removed runtime patching of invalid "%f"/"%0.f" format strings for DragInt()/SliderInt(). This was obsoleted in 1.61 (May 2018). See 1.61 changelog for details.
|
|
|
+ - 2022/09/26 (1.89) - renamed and merged keyboard modifiers key enums and flags into a same set. Kept inline redirection enums (will obsolete).
|
|
|
+ - ImGuiKey_ModCtrl and ImGuiModFlags_Ctrl -> ImGuiMod_Ctrl
|
|
|
+ - ImGuiKey_ModShift and ImGuiModFlags_Shift -> ImGuiMod_Shift
|
|
|
+ - ImGuiKey_ModAlt and ImGuiModFlags_Alt -> ImGuiMod_Alt
|
|
|
+ - ImGuiKey_ModSuper and ImGuiModFlags_Super -> ImGuiMod_Super
|
|
|
+ the ImGuiKey_ModXXX were introduced in 1.87 and mostly used by backends.
|
|
|
+ the ImGuiModFlags_XXX have been exposed in imgui.h but not really used by any public api only by third-party extensions.
|
|
|
+ exceptionally commenting out the older ImGuiKeyModFlags_XXX names ahead of obsolescence schedule to reduce confusion and because they were not meant to be used anyway.
|
|
|
+ - 2022/09/20 (1.89) - ImGuiKey is now a typed enum, allowing ImGuiKey_XXX symbols to be named in debuggers.
|
|
|
+ this will require uses of legacy backend-dependent indices to be casted, e.g.
|
|
|
+ - with imgui_impl_glfw: IsKeyPressed(GLFW_KEY_A) -> IsKeyPressed((ImGuiKey)GLFW_KEY_A);
|
|
|
+ - with imgui_impl_win32: IsKeyPressed('A') -> IsKeyPressed((ImGuiKey)'A')
|
|
|
+ - etc. However if you are upgrading code you might well use the better, backend-agnostic IsKeyPressed(ImGuiKey_A) now!
|
|
|
- 2022/09/12 (1.89) - removed the bizarre legacy default argument for 'TreePush(const void* ptr = NULL)', always pass a pointer value explicitly. NULL/nullptr is ok but require cast, e.g. TreePush((void*)nullptr);
|
|
|
- 2022/09/05 (1.89) - commented out redirecting functions/enums names that were marked obsolete in 1.77 and 1.78 (June 2020):
|
|
|
- DragScalar(), DragScalarN(), DragFloat(), DragFloat2(), DragFloat3(), DragFloat4(): For old signatures ending with (..., const char* format, float power = 1.0f) -> use (..., format ImGuiSliderFlags_Logarithmic) if power != 1.0f.
|
|
@@ -868,12 +874,12 @@ CODE
|
|
|
#define _CRT_SECURE_NO_WARNINGS
|
|
|
#endif
|
|
|
|
|
|
-#include "imgui.h"
|
|
|
-#ifndef IMGUI_DISABLE
|
|
|
-
|
|
|
#ifndef IMGUI_DEFINE_MATH_OPERATORS
|
|
|
#define IMGUI_DEFINE_MATH_OPERATORS
|
|
|
#endif
|
|
|
+
|
|
|
+#include "imgui.h"
|
|
|
+#ifndef IMGUI_DISABLE
|
|
|
#include "imgui_internal.h"
|
|
|
|
|
|
// System includes
|
|
@@ -8252,18 +8258,14 @@ ImGuiKeyData* ImGui::GetKeyData(ImGuiKey key)
|
|
|
if (key & ImGuiMod_Mask_)
|
|
|
key = ConvertSingleModFlagToKey(key);
|
|
|
|
|
|
- int index;
|
|
|
#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
|
|
|
IM_ASSERT(key >= ImGuiKey_LegacyNativeKey_BEGIN && key < ImGuiKey_NamedKey_END);
|
|
|
- if (IsLegacyKey(key))
|
|
|
- index = (g.IO.KeyMap[key] != -1) ? g.IO.KeyMap[key] : key; // Remap native->imgui or imgui->native
|
|
|
- else
|
|
|
- index = key;
|
|
|
+ if (IsLegacyKey(key) && g.IO.KeyMap[key] != -1)
|
|
|
+ key = (ImGuiKey)g.IO.KeyMap[key]; // Remap native->imgui or imgui->native
|
|
|
#else
|
|
|
IM_ASSERT(IsNamedKey(key) && "Support for user key indices was dropped in favor of ImGuiKey. Please update backend & user code.");
|
|
|
- index = key - ImGuiKey_NamedKey_BEGIN;
|
|
|
#endif
|
|
|
- return &g.IO.KeysData[index];
|
|
|
+ return &g.IO.KeysData[key - ImGuiKey_KeysData_OFFSET];
|
|
|
}
|
|
|
|
|
|
#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
|
|
@@ -10632,7 +10634,7 @@ void ImGui::OpenPopup(const char* str_id, ImGuiPopupFlags popup_flags)
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
ImGuiID id = g.CurrentWindow->GetID(str_id);
|
|
|
- IMGUI_DEBUG_LOG_POPUP("[popup] OpenPopup(\"%s\" -> 0x%08X\n", str_id, id);
|
|
|
+ IMGUI_DEBUG_LOG_POPUP("[popup] OpenPopup(\"%s\" -> 0x%08X)\n", str_id, id);
|
|
|
OpenPopupEx(id, popup_flags);
|
|
|
}
|
|
|
|
|
@@ -12836,12 +12838,13 @@ const ImGuiPayload* ImGui::AcceptDragDropPayload(const char* type, ImGuiDragDrop
|
|
|
const bool was_accepted_previously = (g.DragDropAcceptIdPrev == g.DragDropTargetId);
|
|
|
ImRect r = g.DragDropTargetRect;
|
|
|
float r_surface = r.GetWidth() * r.GetHeight();
|
|
|
- if (r_surface <= g.DragDropAcceptIdCurrRectSurface)
|
|
|
- {
|
|
|
- g.DragDropAcceptFlags = flags;
|
|
|
- g.DragDropAcceptIdCurr = g.DragDropTargetId;
|
|
|
- g.DragDropAcceptIdCurrRectSurface = r_surface;
|
|
|
- }
|
|
|
+ if (r_surface > g.DragDropAcceptIdCurrRectSurface)
|
|
|
+ return NULL;
|
|
|
+
|
|
|
+ g.DragDropAcceptFlags = flags;
|
|
|
+ g.DragDropAcceptIdCurr = g.DragDropTargetId;
|
|
|
+ g.DragDropAcceptIdCurrRectSurface = r_surface;
|
|
|
+ //IMGUI_DEBUG_LOG("AcceptDragDropPayload(): %08X: accept\n", g.DragDropTargetId);
|
|
|
|
|
|
// Render default drop visuals
|
|
|
payload.Preview = was_accepted_previously;
|
|
@@ -12850,10 +12853,11 @@ const ImGuiPayload* ImGui::AcceptDragDropPayload(const char* type, ImGuiDragDrop
|
|
|
window->DrawList->AddRect(r.Min - ImVec2(3.5f,3.5f), r.Max + ImVec2(3.5f, 3.5f), GetColorU32(ImGuiCol_DragDropTarget), 0.0f, 0, 2.0f);
|
|
|
|
|
|
g.DragDropAcceptFrameCount = g.FrameCount;
|
|
|
- payload.Delivery = was_accepted_previously && !IsMouseDown(g.DragDropMouseButton); // For extern drag sources affecting os window focus, it's easier to just test !IsMouseDown() instead of IsMouseReleased()
|
|
|
+ payload.Delivery = was_accepted_previously && !IsMouseDown(g.DragDropMouseButton); // For extern drag sources affecting OS window focus, it's easier to just test !IsMouseDown() instead of IsMouseReleased()
|
|
|
if (!payload.Delivery && !(flags & ImGuiDragDropFlags_AcceptBeforeDelivery))
|
|
|
return NULL;
|
|
|
|
|
|
+ //IMGUI_DEBUG_LOG("AcceptDragDropPayload(): %08X: return payload\n", g.DragDropTargetId);
|
|
|
return &payload;
|
|
|
}
|
|
|
|
|
@@ -12869,13 +12873,16 @@ const ImGuiPayload* ImGui::GetDragDropPayload()
|
|
|
return (g.DragDropActive && g.DragDropPayload.DataFrameCount != -1) ? &g.DragDropPayload : NULL;
|
|
|
}
|
|
|
|
|
|
-// We don't really use/need this now, but added it for the sake of consistency and because we might need it later.
|
|
|
void ImGui::EndDragDropTarget()
|
|
|
{
|
|
|
ImGuiContext& g = *GImGui;
|
|
|
IM_ASSERT(g.DragDropActive);
|
|
|
IM_ASSERT(g.DragDropWithinTarget);
|
|
|
g.DragDropWithinTarget = false;
|
|
|
+
|
|
|
+ // Clear drag and drop state payload right after delivery
|
|
|
+ if (g.DragDropPayload.Delivery)
|
|
|
+ ClearDragDrop();
|
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
@@ -19156,7 +19163,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
|
|
|
Text("KEYBOARD/GAMEPAD/MOUSE KEYS");
|
|
|
{
|
|
|
// We iterate both legacy native range and named ImGuiKey ranges, which is a little odd but this allows displaying the data for old/new backends.
|
|
|
- // User code should never have to go through such hoops: old code may use native keycodes, new code may use ImGuiKey codes.
|
|
|
+ // User code should never have to go through such hoops! You can generally iterate between ImGuiKey_NamedKey_BEGIN and ImGuiKey_NamedKey_END.
|
|
|
Indent();
|
|
|
#ifdef IMGUI_DISABLE_OBSOLETE_KEYIO
|
|
|
struct funcs { static bool IsLegacyNativeDupe(ImGuiKey) { return false; } };
|