diff --git a/imgui.cpp b/imgui.cpp index b43295e8..3eecc73a 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -10836,7 +10836,8 @@ const ImGuiPayload* ImGui::AcceptDragDropPayload(const char* type, ImGuiDragDrop } // Render default drop visuals - if (!(flags & ImGuiDragDropFlags_AcceptNoDrawDefaultRect) && was_accepted_previously) + payload.Preview = was_accepted_previously; + if (!(flags & ImGuiDragDropFlags_AcceptNoDrawDefaultRect) && payload.Preview) { // FIXME-DRAG FIXME-STYLE: Settle on a proper default visuals for drop target, w/ ImGuiCol enum value probably. r.Expand(5.0f); diff --git a/imgui.h b/imgui.h index 1624e317..7959d0e7 100644 --- a/imgui.h +++ b/imgui.h @@ -1155,11 +1155,13 @@ struct ImGuiPayload ImGuiID SourceParentId; // Source parent id (if available) int DataFrameCount; // Data timestamp char DataType[8 + 1]; // Data type tag (short user-supplied string) - bool Delivery; // Set when AcceptDragDropPayload() was called and the mouse button is released over the target item + bool Preview; // Set when AcceptDragDropPayload() was called and mouse has been hovering the target item (nb: handle overlapping drag targets) + bool Delivery; // Set when AcceptDragDropPayload() was called and mouse button is released over the target item. ImGuiPayload() { Clear(); } - void Clear() { SourceId = SourceParentId = 0; Data = NULL; DataSize = 0; memset(DataType, 0, sizeof(DataType)); DataFrameCount = -1; Delivery = false; } + void Clear() { SourceId = SourceParentId = 0; Data = NULL; DataSize = 0; memset(DataType, 0, sizeof(DataType)); DataFrameCount = -1; Preview = Delivery = false; } bool IsDataType(const char* type) const { return DataFrameCount != -1 && strcmp(type, DataType) == 0; } + bool IsPreview() const { return Preview; } bool IsDelivery() const { return Delivery; } };