Added an assertion for the common user mistake of using "" as an identifier at the root level of a window. (#1414, #2562, #2807, #4008, #4158, #4375, #4548, #4657, #4796)

#4158, #4375, #4548, #4657, #4796)
This commit is contained in:
ocornut 2021-12-09 15:35:02 +01:00
parent a8e1dde357
commit c801799218
2 changed files with 9 additions and 0 deletions

View File

@ -41,6 +41,10 @@ Breaking Changes:
Other Changes: Other Changes:
- Added an assertion for the common user mistake of using "" as an identifier at the root level of a window
instead of using "##something". Empty identifiers are valid and useful in a very small amount of cases,
but 99.9% of the time if you need an empty label you should use "##something". (#1414, #2562, #2807, #4008,
#4158, #4375, #4548, #4657, #4796). READ THE FAQ ABOUT HOW THE ID STACK WORKS -> https://dearimgui.org/faq
- Added GetMouseClickedCount() function, returning the number of successive clicks. (#3229) [@kudaba] - Added GetMouseClickedCount() function, returning the number of successive clicks. (#3229) [@kudaba]
(so IsMouseDoubleClicked(ImGuiMouseButton_Left) is same as GetMouseClickedCount(ImGuiMouseButton_Left) == 2, (so IsMouseDoubleClicked(ImGuiMouseButton_Left) is same as GetMouseClickedCount(ImGuiMouseButton_Left) == 2,
but it allows testing for triple clicks and more). but it allows testing for triple clicks and more).

View File

@ -7760,6 +7760,11 @@ bool ImGui::ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb_arg, ImGu
if (window == g.NavWindow || ((window->Flags | g.NavWindow->Flags) & ImGuiWindowFlags_NavFlattened)) if (window == g.NavWindow || ((window->Flags | g.NavWindow->Flags) & ImGuiWindowFlags_NavFlattened))
NavProcessItem(); NavProcessItem();
// [DEBUG] People keep stumbling on this problem and using "" as identifier in the root of a window instead of "##something".
// Empty identifier are valid and useful in a small amount of cases, but 99.9% of the time you want to use "##something".
// READ THE FAQ: https://dearimgui.org/faq
IM_ASSERT(id != window->ID && "Cannot have an empty ID at the root of a window. If you need an empty label, use ## and read the FAQ about how the ID Stack works!");
// [DEBUG] Item Picker tool, when enabling the "extended" version we perform the check in ItemAdd() // [DEBUG] Item Picker tool, when enabling the "extended" version we perform the check in ItemAdd()
#ifdef IMGUI_DEBUG_TOOL_ITEM_PICKER_EX #ifdef IMGUI_DEBUG_TOOL_ITEM_PICKER_EX
if (id == g.DebugItemPickerBreakId) if (id == g.DebugItemPickerBreakId)