Drag and Drop: fixed GetDragDropPayload() returning a non-NULL value before payload is submitted. (#5910, #143)

+ Added test "widgets_dragdrop_new_payloads" in Test Suite.
This commit is contained in:
ocornut 2022-11-23 17:58:14 +01:00
parent ffe0abbfc2
commit 856c6314ec
2 changed files with 4 additions and 1 deletions

View File

@ -42,6 +42,9 @@ HOW TO UPDATE?
inside a collapsed/culled window and IMGUI_DISABLE_OBSOLETE_FUNCTIONS is enabled. (#5548, #5911) inside a collapsed/culled window and IMGUI_DISABLE_OBSOLETE_FUNCTIONS is enabled. (#5548, #5911)
- ColorEdit: fixed label overlapping when using style.ColorButtonPosition == ImGuiDir_Left to - ColorEdit: fixed label overlapping when using style.ColorButtonPosition == ImGuiDir_Left to
move the color button on the left side (regression introduced in 1.88 WIP 2022/02/28). (#5912) move the color button on the left side (regression introduced in 1.88 WIP 2022/02/28). (#5912)
- Drag and Drop: fixed GetDragDropPayload() returning a non-NULL value if a drag source is
active but a payload hasn't been submitted yet. This is convenient to detect new payload
from within a drag source handler. (#5910, #143)
- Backends: GLFW: cancel out errors emitted by glfwGetKeyName() when a name is missing. (#5908) - Backends: GLFW: cancel out errors emitted by glfwGetKeyName() when a name is missing. (#5908)

View File

@ -12023,7 +12023,7 @@ void ImGui::RenderDragDropTargetRect(const ImRect& bb)
const ImGuiPayload* ImGui::GetDragDropPayload() const ImGuiPayload* ImGui::GetDragDropPayload()
{ {
ImGuiContext& g = *GImGui; ImGuiContext& g = *GImGui;
return g.DragDropActive ? &g.DragDropPayload : NULL; 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. // We don't really use/need this now, but added it for the sake of consistency and because we might need it later.