|  |  |  | @ -3846,7 +3846,8 @@ void ImGui::NewFrame() | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropAcceptIdPrev = g.DragDropAcceptIdCurr; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropAcceptIdCurr = 0; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropAcceptIdCurrRectSurface = FLT_MAX; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinSourceOrTarget = false; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinSource = false; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinTarget = false; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Update keyboard input state
 | 
			
		
	
		
			
				
					|  |  |  |  |     memcpy(g.IO.KeysDownDurationPrev, g.IO.KeysDownDuration, sizeof(g.IO.KeysDownDuration)); | 
			
		
	
	
		
			
				
					|  |  |  | @ -4237,9 +4238,9 @@ void ImGui::EndFrame() | 
			
		
	
		
			
				
					|  |  |  |  |     // Drag and Drop: Fallback for source tooltip. This is not ideal but better than nothing.
 | 
			
		
	
		
			
				
					|  |  |  |  |     if (g.DragDropActive && g.DragDropSourceFrameCount < g.FrameCount) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         g.DragDropWithinSourceOrTarget = true; | 
			
		
	
		
			
				
					|  |  |  |  |         g.DragDropWithinSource = true; | 
			
		
	
		
			
				
					|  |  |  |  |         SetTooltip("..."); | 
			
		
	
		
			
				
					|  |  |  |  |         g.DragDropWithinSourceOrTarget = false; | 
			
		
	
		
			
				
					|  |  |  |  |         g.DragDropWithinSource = false; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // End frame
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -7459,7 +7460,7 @@ void ImGui::BeginTooltipEx(ImGuiWindowFlags extra_flags, ImGuiTooltipFlags toolt | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     ImGuiContext& g = *GImGui; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if (g.DragDropWithinSourceOrTarget) | 
			
		
	
		
			
				
					|  |  |  |  |     if (g.DragDropWithinSource || g.DragDropWithinTarget) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         // The default tooltip position is a little offset to give space to see the context menu (it's also clamped within the current viewport/monitor)
 | 
			
		
	
		
			
				
					|  |  |  |  |         // In the context of a dragging tooltip we try to reduce that offset and we enforce following the cursor.
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -9119,7 +9120,7 @@ bool ImGui::BeginDragDropSource(ImGuiDragDropFlags flags) | 
			
		
	
		
			
				
					|  |  |  |  |             g.DragDropMouseButton = mouse_button; | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         g.DragDropSourceFrameCount = g.FrameCount; | 
			
		
	
		
			
				
					|  |  |  |  |         g.DragDropWithinSourceOrTarget = true; | 
			
		
	
		
			
				
					|  |  |  |  |         g.DragDropWithinSource = true; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (!(flags & ImGuiDragDropFlags_SourceNoPreviewTooltip)) | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
	
		
			
				
					|  |  |  | @ -9146,7 +9147,7 @@ void ImGui::EndDragDropSource() | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     ImGuiContext& g = *GImGui; | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropActive); | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropWithinSourceOrTarget && "Not after a BeginDragDropSource()?"); | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropWithinSource && "Not after a BeginDragDropSource()?"); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if (!(g.DragDropSourceFlags & ImGuiDragDropFlags_SourceNoPreviewTooltip)) | 
			
		
	
		
			
				
					|  |  |  |  |         EndTooltip(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -9154,7 +9155,7 @@ void ImGui::EndDragDropSource() | 
			
		
	
		
			
				
					|  |  |  |  |     // Discard the drag if have not called SetDragDropPayload()
 | 
			
		
	
		
			
				
					|  |  |  |  |     if (g.DragDropPayload.DataFrameCount == -1) | 
			
		
	
		
			
				
					|  |  |  |  |         ClearDragDrop(); | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinSourceOrTarget = false; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinSource = false; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // Use 'cond' to choose to submit payload on drag start or every frame
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -9216,10 +9217,10 @@ bool ImGui::BeginDragDropTargetCustom(const ImRect& bb, ImGuiID id) | 
			
		
	
		
			
				
					|  |  |  |  |     if (window->SkipItems) | 
			
		
	
		
			
				
					|  |  |  |  |         return false; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropWithinSourceOrTarget == false); | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropWithinTarget == false); | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropTargetRect = bb; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropTargetId = id; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinSourceOrTarget = true; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinTarget = true; | 
			
		
	
		
			
				
					|  |  |  |  |     return true; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -9246,10 +9247,10 @@ bool ImGui::BeginDragDropTarget() | 
			
		
	
		
			
				
					|  |  |  |  |     if (g.DragDropPayload.SourceId == id) | 
			
		
	
		
			
				
					|  |  |  |  |         return false; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropWithinSourceOrTarget == false); | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropWithinTarget == false); | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropTargetRect = display_rect; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropTargetId = id; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinSourceOrTarget = true; | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinTarget = true; | 
			
		
	
		
			
				
					|  |  |  |  |     return true; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -9313,8 +9314,8 @@ void ImGui::EndDragDropTarget() | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     ImGuiContext& g = *GImGui; | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropActive); | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropWithinSourceOrTarget); | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinSourceOrTarget = false; | 
			
		
	
		
			
				
					|  |  |  |  |     IM_ASSERT(g.DragDropWithinTarget); | 
			
		
	
		
			
				
					|  |  |  |  |     g.DragDropWithinTarget = false; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | //-----------------------------------------------------------------------------
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |