Drag and Drop: Elapse payload as soon as delivery is made. (#153)

This commit is contained in:
omar 2018-07-31 17:15:01 +02:00
parent faf2c34149
commit 7e1678ff00

View File

@ -4442,10 +4442,14 @@ void ImGui::EndFrame()
if (g.NavWindowingTarget) if (g.NavWindowingTarget)
NavUpdateWindowingList(); NavUpdateWindowingList();
// Drag and Drop: Elapse payload (if source stops being submitted) // Drag and Drop: Elapse payload (if delivered, or if source stops being submitted)
if (g.DragDropActive && g.DragDropPayload.DataFrameCount + 1 < g.FrameCount) if (g.DragDropActive)
if ((g.DragDropSourceFlags & ImGuiDragDropFlags_SourceAutoExpirePayload) || !IsMouseDown(g.DragDropMouseButton)) {
bool is_delivered = g.DragDropPayload.Delivery;
bool is_elapsed = (g.DragDropPayload.DataFrameCount + 1 < g.FrameCount) && ((g.DragDropSourceFlags & ImGuiDragDropFlags_SourceAutoExpirePayload) || !IsMouseDown(g.DragDropMouseButton));
if (is_delivered || is_elapsed)
ClearDragDrop(); ClearDragDrop();
}
// Drag and Drop: Fallback for source tooltip. This is not ideal but better than nothing. // Drag and Drop: Fallback for source tooltip. This is not ideal but better than nothing.
if (g.DragDropActive && g.DragDropSourceFrameCount < g.FrameCount) if (g.DragDropActive && g.DragDropSourceFrameCount < g.FrameCount)