| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -96,6 +96,7 @@ struct ImGui_ImplSDL2_Data | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    Uint32          MouseWindowID; | 
					 | 
					 | 
					 | 
					    Uint32          MouseWindowID; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    int             MouseButtonsDown; | 
					 | 
					 | 
					 | 
					    int             MouseButtonsDown; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    SDL_Cursor*     MouseCursors[ImGuiMouseCursor_COUNT]; | 
					 | 
					 | 
					 | 
					    SDL_Cursor*     MouseCursors[ImGuiMouseCursor_COUNT]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    int             PendingMouseLeaveFrame; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    char*           ClipboardTextData; | 
					 | 
					 | 
					 | 
					    char*           ClipboardTextData; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    bool            MouseCanUseGlobalState; | 
					 | 
					 | 
					 | 
					    bool            MouseCanUseGlobalState; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    bool            UseVulkan; | 
					 | 
					 | 
					 | 
					    bool            UseVulkan; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -315,16 +316,19 @@ bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        case SDL_WINDOWEVENT: | 
					 | 
					 | 
					 | 
					        case SDL_WINDOWEVENT: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        { | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            // When capturing mouse, SDL will send a bunch of conflicting LEAVE/ENTER event on every mouse move, but the final ENTER tends to be right.
 | 
					 | 
					 | 
					 | 
					            // - When capturing mouse, SDL will send a bunch of conflicting LEAVE/ENTER event on every mouse move, but the final ENTER tends to be right.
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            // However we won't get a correct LEAVE event for a captured window.
 | 
					 | 
					 | 
					 | 
					            // - However we won't get a correct LEAVE event for a captured window.
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            // - In some cases, when detaching a window from main viewport SDL may send SDL_WINDOWEVENT_ENTER one frame too late,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            //   causing SDL_WINDOWEVENT_LEAVE on previous frame to interrupt drag operation by clear mouse position. This is why
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            //   we delay process the SDL_WINDOWEVENT_LEAVE events by one frame. See issue #5012 for details.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            Uint8 window_event = event->window.event; | 
					 | 
					 | 
					 | 
					            Uint8 window_event = event->window.event; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (window_event == SDL_WINDOWEVENT_ENTER) | 
					 | 
					 | 
					 | 
					            if (window_event == SDL_WINDOWEVENT_ENTER) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                bd->MouseWindowID = event->window.windowID; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (window_event == SDL_WINDOWEVENT_LEAVE) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            { | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                bd->MouseWindowID = 0; | 
					 | 
					 | 
					 | 
					                bd->MouseWindowID = event->window.windowID; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                io.AddMousePosEvent(-FLT_MAX, -FLT_MAX); | 
					 | 
					 | 
					 | 
					                bd->PendingMouseLeaveFrame = 0; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            if (window_event == SDL_WINDOWEVENT_LEAVE) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                bd->PendingMouseLeaveFrame = ImGui::GetFrameCount() + 1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (window_event == SDL_WINDOWEVENT_FOCUS_GAINED) | 
					 | 
					 | 
					 | 
					            if (window_event == SDL_WINDOWEVENT_FOCUS_GAINED) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                io.AddFocusEvent(true); | 
					 | 
					 | 
					 | 
					                io.AddFocusEvent(true); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            else if (window_event == SDL_WINDOWEVENT_FOCUS_LOST) | 
					 | 
					 | 
					 | 
					            else if (window_event == SDL_WINDOWEVENT_FOCUS_LOST) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -665,6 +669,12 @@ void ImGui_ImplSDL2_NewFrame() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    io.DeltaTime = bd->Time > 0 ? (float)((double)(current_time - bd->Time) / frequency) : (float)(1.0f / 60.0f); | 
					 | 
					 | 
					 | 
					    io.DeltaTime = bd->Time > 0 ? (float)((double)(current_time - bd->Time) / frequency) : (float)(1.0f / 60.0f); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    bd->Time = current_time; | 
					 | 
					 | 
					 | 
					    bd->Time = current_time; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (bd->PendingMouseLeaveFrame && bd->PendingMouseLeaveFrame == ImGui::GetFrameCount()) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        bd->MouseWindowID = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        io.AddMousePosEvent(-FLT_MAX, -FLT_MAX); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ImGui_ImplSDL2_UpdateMouseData(); | 
					 | 
					 | 
					 | 
					    ImGui_ImplSDL2_UpdateMouseData(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ImGui_ImplSDL2_UpdateMouseCursor(); | 
					 | 
					 | 
					 | 
					    ImGui_ImplSDL2_UpdateMouseCursor(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |