Skip to content

Commit 68aa9a8

Browse files
committed
Merge branch 'master' into docking
# Conflicts: # backends/imgui_impl_sdl2.cpp
2 parents 7694e89 + 67cd4ea commit 68aa9a8

File tree

8 files changed

+111
-11
lines changed

8 files changed

+111
-11
lines changed

backends/imgui_impl_sdl2.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
// CHANGELOG
2727
// (minor and older changes stripped away, please see git history for details)
2828
// 2024-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface.
29+
// 2024-09-09: use SDL_Vulkan_GetDrawableSize() when available. (#7967, #3190)
2930
// 2024-08-22: moved some OS/backend related function pointers from ImGuiIO to ImGuiPlatformIO:
3031
// - io.GetClipboardTextFn -> platform_io.Platform_GetClipboardTextFn
3132
// - io.SetClipboardTextFn -> platform_io.Platform_SetClipboardTextFn
@@ -124,7 +125,9 @@
124125
#define SDL_HAS_VULKAN SDL_VERSION_ATLEAST(2,0,6)
125126
#define SDL_HAS_DISPLAY_EVENT SDL_VERSION_ATLEAST(2,0,9)
126127
#define SDL_HAS_SHOW_WINDOW_ACTIVATION_HINT SDL_VERSION_ATLEAST(2,0,18)
127-
#if !SDL_HAS_VULKAN
128+
#if SDL_HAS_VULKAN
129+
extern "C" { extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window* window, int* w, int* h); }
130+
#elif
128131
static const Uint32 SDL_WINDOW_VULKAN = 0x10000000;
129132
#endif
130133

@@ -895,6 +898,10 @@ void ImGui_ImplSDL2_NewFrame()
895898
w = h = 0;
896899
if (bd->Renderer != nullptr)
897900
SDL_GetRendererOutputSize(bd->Renderer, &display_w, &display_h);
901+
#if SDL_HAS_VULKAN
902+
else if (SDL_GetWindowFlags(bd->Window) & SDL_WINDOW_VULKAN)
903+
SDL_Vulkan_GetDrawableSize(bd->Window, &display_w, &display_h);
904+
#endif
898905
else
899906
SDL_GL_GetDrawableSize(bd->Window, &display_w, &display_h);
900907
io.DisplaySize = ImVec2((float)w, (float)h);

docs/CHANGELOG.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,29 @@ Breaking changes:
4343

4444
Other changes:
4545

46+
- Added io.ConfigDebugHighlightIdConflicts debug feature! (#7961, #7669)
47+
THIS DETECTS THE MOST COMMON USER ERROR BY FIRST-TIME DEAR IMGUI PROGRAMMERS!
48+
- The tool detects when multiple items are sharing the same identifier, due to not
49+
using PushID/PopID in loops, or not using ID stack facilities such as "##" suffixes.
50+
Very frequently it happens when using empty "" labels.
51+
- When hovering an item with a conflicting ID, all visible items with the same ID will
52+
be highlighted and an explanatory tooltip is made visible.
53+
- The feature may be disabled and is exposed in Demo->Tools menu.
54+
- I've been wanting to add this tool for a long time, but was stalled by finding a way to
55+
not make it spammy + make it practically zero cost. After @pthom made various proposals to
56+
solve the same problem (thanks for pushing me!), I decided it was time to finish it.
57+
- Added ImGuiItemFlags_AllowDuplicateId to use with PushItemFlag/PopItemFlag() if for some
58+
reason you intend to have duplicate identifiers.
59+
- (#74, #96, #480, #501, #647, #654, #719, #843, #894, #1057, #1173, #1390, #1414, #1556, #1768,
60+
#2041, #2116, #2330, #2475, #2562, #2667, #2807, #2885, #3102, #3375, #3526, #3964, #4008,
61+
#4070, #4158, #4172, #4199, #4375, #4395, #4471, #4548, #4612, #4631, #4657, #4796, #5210,
62+
#5303, #5360, #5393, #5533, #5692, #5707, #5729, #5773, #5787, #5884, #6046, #6093, #6186,
63+
#6223, #6364, #6387, #6567, #6692, #6724, #6939, #6984, #7246, #7270, #7375, #7421, #7434,
64+
#7472, #7581, #7724, #7926, #7937 and probably more..)
4665
- Nav: pressing any keyboard key while holding Alt disable toggling nav layer on Alt release. (#4439)
4766
- InputText: added CJK double-width punctuation to list of separators considered for CTRL+Arrow.
4867
- TextLinkOpenURL(): modified tooltip to display a verb "Open 'xxxx'". (#7885, #7660)
68+
- Backends: SDL2: use SDL_Vulkan_GetDrawableSize() when available. (#7967, #3190) [@scribam]
4969

5070
-----------------------------------------------------------------------
5171
VERSION 1.91.1 (Released 2024-09-04)

docs/FAQ.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,11 @@ ctx->RSSetScissorRects(1, &r);
204204
### Q: How can I have multiple widgets with the same label?
205205
### Q: How can I have multiple windows with the same label?
206206

207-
**USING THE SAME LABEL+ID IS THE MOST COMMON USER MISTAKE:**
207+
**USING THE SAME LABEL+ID IS THE MOST COMMON USER MISTAKE!**
208+
<br>**USING AN EMPTY LABEL IS THE SAME AS USING THE SAME LABEL AS YOUR PARENT WIDGET!**
208209
<table>
209210
<tr>
210-
<td><img src="https://github.com/ocornut/imgui/assets/8225057/76eb9467-74d1-4e95-9f56-be81c6dd029d"></td>
211+
<td><img src="https://github.com/user-attachments/assets/776a8315-1164-4178-9a8c-df52e0ff28aa"></td>
211212
<td>
212213
<pre lang="cpp">
213214
ImGui::Begin("Incorrect!");

imgui.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1434,6 +1434,8 @@ ImGuiIO::ImGuiIO()
14341434
ConfigWindowsResizeFromEdges = true;
14351435
ConfigWindowsMoveFromTitleBarOnly = false;
14361436
ConfigMemoryCompactTimer = 60.0f;
1437+
ConfigDebugIsDebuggerPresent = false;
1438+
ConfigDebugHighlightIdConflicts = true;
14371439
ConfigDebugBeginReturnValueOnce = false;
14381440
ConfigDebugBeginReturnValueLoop = false;
14391441

@@ -4386,6 +4388,17 @@ bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id, ImGuiItemFlags item_flag
43864388
{
43874389
ImGuiContext& g = *GImGui;
43884390
ImGuiWindow* window = g.CurrentWindow;
4391+
4392+
// Detect ID conflicts
4393+
#ifndef IMGUI_DISABLE_DEBUG_TOOLS
4394+
if (id != 0 && g.HoveredIdPreviousFrame == id && (item_flags & ImGuiItemFlags_AllowDuplicateId) == 0)
4395+
{
4396+
g.HoveredIdPreviousFrameItemCount++;
4397+
if (g.DebugDrawIdConflicts == id)
4398+
window->DrawList->AddRect(bb.Min - ImVec2(1,1), bb.Max + ImVec2(1,1), IM_COL32(255, 0, 0, 255), 0.0f, ImDrawFlags_None, 2.0f);
4399+
}
4400+
#endif
4401+
43894402
if (g.HoveredWindow != window)
43904403
return false;
43914404
if (!IsMouseHoveringRect(bb.Min, bb.Max))
@@ -5004,6 +5017,11 @@ void ImGui::NewFrame()
50045017
if (g.DragDropActive && g.DragDropPayload.SourceId == g.ActiveId)
50055018
KeepAliveID(g.DragDropPayload.SourceId);
50065019

5020+
// [DEBUG]
5021+
g.DebugDrawIdConflicts = 0;
5022+
if (g.IO.ConfigDebugHighlightIdConflicts && g.HoveredIdPreviousFrameItemCount > 1)
5023+
g.DebugDrawIdConflicts = g.HoveredIdPreviousFrame;
5024+
50075025
// Update HoveredId data
50085026
if (!g.HoveredIdPreviousFrame)
50095027
g.HoveredIdTimer = 0.0f;
@@ -5014,6 +5032,7 @@ void ImGui::NewFrame()
50145032
if (g.HoveredId && g.ActiveId != g.HoveredId)
50155033
g.HoveredIdNotActiveTimer += g.IO.DeltaTime;
50165034
g.HoveredIdPreviousFrame = g.HoveredId;
5035+
g.HoveredIdPreviousFrameItemCount = 0;
50175036
g.HoveredId = 0;
50185037
g.HoveredIdAllowOverlap = false;
50195038
g.HoveredIdIsDisabled = false;
@@ -5463,6 +5482,29 @@ void ImGui::EndFrame()
54635482
return;
54645483
IM_ASSERT(g.WithinFrameScope && "Forgot to call ImGui::NewFrame()?");
54655484

5485+
#ifndef IMGUI_DISABLE_DEBUG_TOOLS
5486+
if (g.DebugDrawIdConflicts != 0)
5487+
{
5488+
PushStyleColor(ImGuiCol_PopupBg, ImLerp(g.Style.Colors[ImGuiCol_PopupBg], ImVec4(1.0f, 0.0f, 0.0f, 1.0f), 0.10f));
5489+
if (g.DebugItemPickerActive == false && BeginTooltipEx(ImGuiTooltipFlags_OverridePrevious, ImGuiWindowFlags_None))
5490+
{
5491+
SeparatorText("MESSAGE FROM DEAR IMGUI");
5492+
Text("Programmer error: %d visible items with conflicting ID!", g.HoveredIdPreviousFrameItemCount);
5493+
BulletText("Code should use PushID()/PopID() in loops, or append \"##xx\" to same-label identifiers!");
5494+
BulletText("Empty label e.g. Button(\"\") == same ID as parent widget/node. Use Button(\"##xx\") instead!");
5495+
BulletText("Press F1 to open \"FAQ -> About the ID Stack System\" and read details.");
5496+
BulletText("Press CTRL+P to activate Item Picker and debug-break in item call-stack.");
5497+
BulletText("Set io.ConfigDebugDetectIdConflicts=false to disable this warning in non-programmers builds.");
5498+
EndTooltip();
5499+
}
5500+
PopStyleColor();
5501+
if (Shortcut(ImGuiMod_Ctrl | ImGuiKey_P, ImGuiInputFlags_RouteGlobal))
5502+
DebugStartItemPicker();
5503+
if (Shortcut(ImGuiKey_F1, ImGuiInputFlags_RouteGlobal) && g.PlatformIO.Platform_OpenInShellFn != NULL)
5504+
g.PlatformIO.Platform_OpenInShellFn(&g, "https://github.com/ocornut/imgui/blob/master/docs/FAQ.md#qa-usage");
5505+
}
5506+
#endif
5507+
54665508
CallContextHooks(&g, ImGuiContextHookType_EndFramePre);
54675509

54685510
ErrorCheckEndFrameSanityChecks();

imgui.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
// Library Version
3030
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345')
3131
#define IMGUI_VERSION "1.91.2 WIP"
32-
#define IMGUI_VERSION_NUM 19112
32+
#define IMGUI_VERSION_NUM 19113
3333
#define IMGUI_HAS_TABLE
3434
#define IMGUI_HAS_VIEWPORT // Viewport WIP branch
3535
#define IMGUI_HAS_DOCK // Docking WIP branch
@@ -1174,6 +1174,7 @@ enum ImGuiItemFlags_
11741174
ImGuiItemFlags_NoNavDefaultFocus = 1 << 2, // false // Disable item being a candidate for default focus (e.g. used by title bar items).
11751175
ImGuiItemFlags_ButtonRepeat = 1 << 3, // false // Any button-like behavior will have repeat mode enabled (based on io.KeyRepeatDelay and io.KeyRepeatRate values). Note that you can also call IsItemActive() after any button to tell if it is being held.
11761176
ImGuiItemFlags_AutoClosePopups = 1 << 4, // true // MenuItem()/Selectable() automatically close their parent popup window.
1177+
ImGuiItemFlags_AllowDuplicateId = 1 << 5, // false // Allow submitting an item with the same identifier as an item already submitted this frame without triggering a warning tooltip if io.ConfigDebugHighlightIdConflicts is set.
11771178
};
11781179

11791180
// Flags for ImGui::InputText()
@@ -2309,6 +2310,7 @@ struct ImGuiIO
23092310
const char* LogFilename; // = "imgui_log.txt"// Path to .log file (default parameter to ImGui::LogToFile when no file is specified).
23102311
void* UserData; // = NULL // Store your own data.
23112312

2313+
// Font system
23122314
ImFontAtlas*Fonts; // <auto> // Font atlas: load, rasterize and pack one or more fonts into a single texture.
23132315
float FontGlobalScale; // = 1.0f // Global scale all fonts
23142316
bool FontAllowUserScaling; // = false // Allow user scaling text of individual window with CTRL+Wheel.
@@ -2328,6 +2330,7 @@ struct ImGuiIO
23282330
bool ConfigViewportsNoDefaultParent; // = false // Disable default OS parenting to main viewport for secondary viewports. By default, viewports are marked with ParentViewportId = <main_viewport>, expecting the platform backend to setup a parent/child relationship between the OS windows (some backend may ignore this). Set to true if you want the default to be 0, then all viewports will be top-level OS windows.
23292331

23302332
// Miscellaneous options
2333+
// (you can visualize and interact with all options in 'Demo->Configuration')
23312334
bool MouseDrawCursor; // = false // Request ImGui to draw a mouse cursor for you (if you are on a platform without a mouse cursor). Cannot be easily renamed to 'io.ConfigXXX' because this is frequently used by backend implementations.
23322335
bool ConfigMacOSXBehaviors; // = defined(__APPLE__) // Swap Cmd<>Ctrl keys + OS X style text editing cursor movement using Alt instead of Ctrl, Shortcuts using Cmd/Super instead of Ctrl, Line/Text Start and End using Cmd+Arrows instead of Home/End, Double click selects by word instead of selecting whole text, Multi-selection in lists uses Cmd/Super instead of Ctrl.
23332336
bool ConfigNavSwapGamepadButtons; // = false // Swap Activate<>Cancel (A<>B) buttons, matching typical "Nintendo/Japanese style" gamepad layout.
@@ -2357,6 +2360,12 @@ struct ImGuiIO
23572360
// e.g. io.ConfigDebugIsDebuggerPresent = ::IsDebuggerPresent() on Win32, or refer to ImOsIsDebuggerPresent() imgui_test_engine/imgui_te_utils.cpp for a Unix compatible version).
23582361
bool ConfigDebugIsDebuggerPresent; // = false // Enable various tools calling IM_DEBUG_BREAK().
23592362

2363+
// Tools to detect code submitting items with conflicting/duplicate IDs
2364+
// - Code should use PushID()/PopID() in loops, or append "##xx" to same-label identifiers.
2365+
// - Empty label e.g. Button("") == same ID as parent widget/node. Use Button("##xx") instead!
2366+
// - See FAQ https://github.com/ocornut/imgui/blob/master/docs/FAQ.md#q-about-the-id-stack-system
2367+
bool ConfigDebugHighlightIdConflicts;// = true // Highlight and show an error message when multiple items have conflicting identifiers.
2368+
23602369
// Tools to test correct Begin/End and BeginChild/EndChild behaviors.
23612370
// - Presently Begin()/End() and BeginChild()/EndChild() needs to ALWAYS be called in tandem, regardless of return value of BeginXXX()
23622371
// - This is inconsistent with other BeginXXX functions and create confusion for many users.

imgui_demo.cpp

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -600,8 +600,10 @@ void ImGui::ShowDemoWindow(bool* p_open)
600600
ImGui::SeparatorText("Debug");
601601
ImGui::Checkbox("io.ConfigDebugIsDebuggerPresent", &io.ConfigDebugIsDebuggerPresent);
602602
ImGui::SameLine(); HelpMarker("Enable various tools calling IM_DEBUG_BREAK().\n\nRequires a debugger being attached, otherwise IM_DEBUG_BREAK() options will appear to crash your application.");
603+
ImGui::Checkbox("io.ConfigDebugHighlightIdConflicts", &io.ConfigDebugHighlightIdConflicts);
604+
ImGui::SameLine(); HelpMarker("Highlight and show an error message when multiple items have conflicting identifiers.");
603605
ImGui::BeginDisabled();
604-
ImGui::Checkbox("io.ConfigDebugBeginReturnValueOnce", &io.ConfigDebugBeginReturnValueOnce); // .
606+
ImGui::Checkbox("io.ConfigDebugBeginReturnValueOnce", &io.ConfigDebugBeginReturnValueOnce);
605607
ImGui::EndDisabled();
606608
ImGui::SameLine(); HelpMarker("First calls to Begin()/BeginChild() will return false.\n\nTHIS OPTION IS DISABLED because it needs to be set at application boot-time to make sense. Showing the disabled option is a way to make this feature easier to discover.");
607609
ImGui::Checkbox("io.ConfigDebugBeginReturnValueLoop", &io.ConfigDebugBeginReturnValueLoop);
@@ -744,6 +746,7 @@ static void ShowDemoWindowMenuBar(ImGuiDemoWindowData* demo_data)
744746
if (ImGui::BeginMenu("Tools"))
745747
{
746748
IMGUI_DEMO_MARKER("Menu/Tools");
749+
ImGuiIO& io = ImGui::GetIO();
747750
#ifndef IMGUI_DISABLE_DEBUG_TOOLS
748751
const bool has_debug_tools = true;
749752
#else
@@ -752,14 +755,16 @@ static void ShowDemoWindowMenuBar(ImGuiDemoWindowData* demo_data)
752755
ImGui::MenuItem("Metrics/Debugger", NULL, &demo_data->ShowMetrics, has_debug_tools);
753756
ImGui::MenuItem("Debug Log", NULL, &demo_data->ShowDebugLog, has_debug_tools);
754757
ImGui::MenuItem("ID Stack Tool", NULL, &demo_data->ShowIDStackTool, has_debug_tools);
755-
ImGui::MenuItem("Style Editor", NULL, &demo_data->ShowStyleEditor);
756-
bool is_debugger_present = ImGui::GetIO().ConfigDebugIsDebuggerPresent;
758+
bool is_debugger_present = io.ConfigDebugIsDebuggerPresent;
757759
if (ImGui::MenuItem("Item Picker", NULL, false, has_debug_tools && is_debugger_present))
758760
ImGui::DebugStartItemPicker();
759761
if (!is_debugger_present)
760762
ImGui::SetItemTooltip("Requires io.ConfigDebugIsDebuggerPresent=true to be set.\n\nWe otherwise disable the menu option to avoid casual users crashing the application.\n\nYou can however always access the Item Picker in Metrics->Tools.");
761-
ImGui::Separator();
763+
ImGui::MenuItem("Style Editor", NULL, &demo_data->ShowStyleEditor);
762764
ImGui::MenuItem("About Dear ImGui", NULL, &demo_data->ShowAbout);
765+
766+
ImGui::SeparatorText("Debug Options");
767+
ImGui::MenuItem("Highlight ID Conflicts", NULL, &io.ConfigDebugHighlightIdConflicts, has_debug_tools);
763768
ImGui::EndMenu();
764769
}
765770
ImGui::EndMenuBar();
@@ -2060,8 +2065,8 @@ static void ShowDemoWindowWidgets(ImGuiDemoWindowData* demo_data)
20602065
ImGui::SameLine();
20612066
ImGui::SliderInt("Sample count", &display_count, 1, 400);
20622067
float (*func)(void*, int) = (func_type == 0) ? Funcs::Sin : Funcs::Saw;
2063-
ImGui::PlotLines("Lines", func, NULL, display_count, 0, NULL, -1.0f, 1.0f, ImVec2(0, 80));
2064-
ImGui::PlotHistogram("Histogram", func, NULL, display_count, 0, NULL, -1.0f, 1.0f, ImVec2(0, 80));
2068+
ImGui::PlotLines("Lines##2", func, NULL, display_count, 0, NULL, -1.0f, 1.0f, ImVec2(0, 80));
2069+
ImGui::PlotHistogram("Histogram##2", func, NULL, display_count, 0, NULL, -1.0f, 1.0f, ImVec2(0, 80));
20652070
ImGui::Separator();
20662071

20672072
ImGui::Text("Need better plotting and graphing? Consider using ImPlot:");
@@ -2656,6 +2661,11 @@ static void ShowDemoWindowWidgets(ImGuiDemoWindowData* demo_data)
26562661
IMGUI_DEMO_MARKER("Widgets/Drag and Drop/Drag to reorder items (simple)");
26572662
if (ImGui::TreeNode("Drag to reorder items (simple)"))
26582663
{
2664+
// FIXME: there is temporary (usually single-frame) ID Conflict during reordering as a same item may be submitting twice.
2665+
// This code was always slightly faulty but in a way which was not easily noticeable.
2666+
// Until we fix this, enable ImGuiItemFlags_AllowDuplicateId to disable detecting the issue.
2667+
ImGui::PushItemFlag(ImGuiItemFlags_AllowDuplicateId, true);
2668+
26592669
// Simple reordering
26602670
HelpMarker(
26612671
"We don't use the drag and drop api at all here! "
@@ -2677,6 +2687,8 @@ static void ShowDemoWindowWidgets(ImGuiDemoWindowData* demo_data)
26772687
}
26782688
}
26792689
}
2690+
2691+
ImGui::PopItemFlag();
26802692
ImGui::TreePop();
26812693
}
26822694

@@ -4300,7 +4312,7 @@ static void ShowDemoWindowLayout()
43004312
// down by FramePadding.y ahead of time)
43014313
ImGui::AlignTextToFramePadding();
43024314
ImGui::Text("OK Blahblah"); ImGui::SameLine();
4303-
ImGui::Button("Some framed item"); ImGui::SameLine();
4315+
ImGui::Button("Some framed item##2"); ImGui::SameLine();
43044316
HelpMarker("We call AlignTextToFramePadding() to vertically align the text baseline by +FramePadding.y");
43054317

43064318
// SmallButton() uses the same vertical padding as Text
@@ -7223,12 +7235,14 @@ static void ShowDemoWindowColumns()
72237235
{
72247236
if (h_borders && ImGui::GetColumnIndex() == 0)
72257237
ImGui::Separator();
7238+
ImGui::PushID(i);
72267239
ImGui::Text("%c%c%c", 'a' + i, 'a' + i, 'a' + i);
72277240
ImGui::Text("Width %.2f", ImGui::GetColumnWidth());
72287241
ImGui::Text("Avail %.2f", ImGui::GetContentRegionAvail().x);
72297242
ImGui::Text("Offset %.2f", ImGui::GetColumnOffset());
72307243
ImGui::Text("Long text that is likely to clip");
72317244
ImGui::Button("Button", ImVec2(-FLT_MIN, 0.0f));
7245+
ImGui::PopID();
72327246
ImGui::NextColumn();
72337247
}
72347248
ImGui::Columns(1);

imgui_internal.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2237,9 +2237,11 @@ struct ImGuiContext
22372237
ImVec2 WheelingAxisAvg;
22382238

22392239
// Item/widgets state and tracking information
2240+
ImGuiID DebugDrawIdConflicts; // Set when we detect multiple items with the same identifier
22402241
ImGuiID DebugHookIdInfo; // Will call core hooks: DebugHookIdInfo() from GetID functions, used by ID Stack Tool [next HoveredId/ActiveId to not pull in an extra cache-line]
22412242
ImGuiID HoveredId; // Hovered widget, filled during the frame
22422243
ImGuiID HoveredIdPreviousFrame;
2244+
int HoveredIdPreviousFrameItemCount; // Count numbers of items using the same ID as last frame's hovered id
22432245
float HoveredIdTimer; // Measure contiguous hovering time
22442246
float HoveredIdNotActiveTimer; // Measure contiguous hovering time where the item has not been active
22452247
bool HoveredIdAllowOverlap;
@@ -2577,8 +2579,10 @@ struct ImGuiContext
25772579
WheelingWindowStartFrame = WheelingWindowScrolledFrame = -1;
25782580
WheelingWindowReleaseTimer = 0.0f;
25792581

2582+
DebugDrawIdConflicts = 0;
25802583
DebugHookIdInfo = 0;
25812584
HoveredId = HoveredIdPreviousFrame = 0;
2585+
HoveredIdPreviousFrameItemCount = 0;
25822586
HoveredIdAllowOverlap = false;
25832587
HoveredIdIsDisabled = false;
25842588
HoveredIdTimer = HoveredIdNotActiveTimer = 0.0f;

0 commit comments

Comments
 (0)