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
1 changed files with 8 additions and 4 deletions

View File

@ -4441,11 +4441,15 @@ void ImGui::EndFrame()
// Show CTRL+TAB list
if (g.NavWindowingTarget)
NavUpdateWindowingList();
// Drag and Drop: Elapse payload (if source stops being submitted)
if (g.DragDropActive && g.DragDropPayload.DataFrameCount + 1 < g.FrameCount)
if ((g.DragDropSourceFlags & ImGuiDragDropFlags_SourceAutoExpirePayload) || !IsMouseDown(g.DragDropMouseButton))
// Drag and Drop: Elapse payload (if delivered, or if source stops being submitted)
if (g.DragDropActive)
{
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();
}
// Drag and Drop: Fallback for source tooltip. This is not ideal but better than nothing.
if (g.DragDropActive && g.DragDropSourceFrameCount < g.FrameCount)