Procházet zdrojové kódy

Relaxed internal assert in MarkItemEdited() some more. (#8997)

Amend e7a734f78d, 5a2b1e8482
ocornut před 4 dny
rodič
revize
702cc9993a
2 změnil soubory, kde provedl 3 přidání a 1 odebrání
  1. 1 0
      docs/CHANGELOG.txt
  2. 2 1
      imgui.cpp

+ 1 - 0
docs/CHANGELOG.txt

@@ -93,6 +93,7 @@ Other Changes:
     using a shared ImFontAtlas, leading standard backends to not properly
     free texture resources. (#8975) [@icrashstuff]
 - Demo: fixed layout issue in "Layout & Scrolling -> Scrolling" section.
+- Misc: Relaxed internal assert in MarkItemEdited() to allow for more use cases. (#8997)
 - Misc: Debuggers: added type formatters for the LLDB debuggers (e.g. Xcode,
   Android Studio & more) to provide nicer display for ImVec2, ImVec4, ImVector etc.
   See misc/debuggers/ for details. (#8950) [@mentlerd]

+ 2 - 1
imgui.cpp

@@ -4639,7 +4639,8 @@ void ImGui::MarkItemEdited(ImGuiID id)
 
     // We accept a MarkItemEdited() on drag and drop targets (see https://github.com/ocornut/imgui/issues/1875#issuecomment-978243343)
     // We accept 'ActiveIdPreviousFrame == id' for InputText() returning an edit after it has been taken ActiveId away (#4714)
-    IM_ASSERT(g.DragDropActive || g.ActiveId == id || g.ActiveId == 0 || g.ActiveIdPreviousFrame == id || (g.CurrentMultiSelect != NULL && g.BoxSelectState.IsActive));
+    // FIXME: This assert is getting a bit meaningless over time. It helped detect some unusual use cases but eventually it is becoming an unnecessary restriction.
+    IM_ASSERT(g.DragDropActive || g.ActiveId == id || g.ActiveId == 0 || g.ActiveIdPreviousFrame == id || g.NavJustMovedToId || (g.CurrentMultiSelect != NULL && g.BoxSelectState.IsActive));
 
     //IM_ASSERT(g.CurrentWindow->DC.LastItemId == id);
     g.LastItemData.StatusFlags |= ImGuiItemStatusFlags_Edited;