@ -12656,7 +12656,6 @@ bool ImGui::IsDragDropPayloadBeingAccepted()
const ImGuiPayload * ImGui : : AcceptDragDropPayload ( const char * type , ImGuiDragDropFlags flags )
{
ImGuiContext & g = * GImGui ;
ImGuiWindow * window = g . CurrentWindow ;
ImGuiPayload & payload = g . DragDropPayload ;
IM_ASSERT ( g . DragDropActive ) ; // Not called between BeginDragDropTarget() and EndDragDropTarget() ?
IM_ASSERT ( payload . DataFrameCount ! = - 1 ) ; // Forgot to call EndDragDropTarget() ?
@ -12680,7 +12679,7 @@ const ImGuiPayload* ImGui::AcceptDragDropPayload(const char* type, ImGuiDragDrop
payload . Preview = was_accepted_previously ;
flags | = ( g . DragDropSourceFlags & ImGuiDragDropFlags_AcceptNoDrawDefaultRect ) ; // Source can also inhibit the preview (useful for external sources that live for 1 frame)
if ( ! ( flags & ImGuiDragDropFlags_AcceptNoDrawDefaultRect ) & & payload . Preview )
window - > DrawList - > AddRect ( r . Min - ImVec2 ( 3.5f , 3.5f ) , r . Max + ImVec2 ( 3.5f , 3.5f ) , GetColorU32 ( ImGuiCol_DragDropTarget ) , 0.0f , 0 , 2.0f ) ;
RenderDragDropTargetRect ( r ) ;
g . DragDropAcceptFrameCount = g . FrameCount ;
payload . Delivery = was_accepted_previously & & ! IsMouseDown ( g . DragDropMouseButton ) ; // For extern drag sources affecting OS window focus, it's easier to just test !IsMouseDown() instead of IsMouseReleased()
@ -12691,10 +12690,20 @@ const ImGuiPayload* ImGui::AcceptDragDropPayload(const char* type, ImGuiDragDrop
return & payload ;
}
// FIXME-DRAGDROP: Settle on a proper default visuals for drop target.
// FIXME-STYLE FIXME- DRAGDROP: Settle on a proper default visuals for drop target.
void ImGui : : RenderDragDropTargetRect ( const ImRect & bb )
{
GetWindowDrawList ( ) - > AddRect ( bb . Min - ImVec2 ( 3.5f , 3.5f ) , bb . Max + ImVec2 ( 3.5f , 3.5f ) , GetColorU32 ( ImGuiCol_DragDropTarget ) , 0.0f , 0 , 2.0f ) ;
ImGuiContext & g = * GImGui ;
ImGuiWindow * window = g . CurrentWindow ;
ImRect bb_display = bb ;
bb_display . ClipWith ( window - > ClipRect ) ; // Clip THEN expand so we have a way to visualize that target is not entirely visible.
bb_display . Expand ( 3.5f ) ;
bool push_clip_rect = ! window - > ClipRect . Contains ( bb_display ) ;
if ( push_clip_rect )
window - > DrawList - > PushClipRectFullScreen ( ) ;
window - > DrawList - > AddRect ( bb_display . Min , bb_display . Max , GetColorU32 ( ImGuiCol_DragDropTarget ) , 0.0f , 0 , 2.0f ) ;
if ( push_clip_rect )
window - > DrawList - > PopClipRect ( ) ;
}
const ImGuiPayload * ImGui : : GetDragDropPayload ( )