mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Backends: SDL: no support for ImGuiBackendFlags_HasMouseHoveredViewport under OSX/LInux (#4960)
This commit is contained in:
		@@ -367,10 +367,13 @@ static bool ImGui_ImplSDL2_Init(SDL_Window* window, void* sdl_gl_context)
 | 
				
			|||||||
    io.BackendFlags |= ImGuiBackendFlags_HasMouseCursors;           // We can honor GetMouseCursor() values (optional)
 | 
					    io.BackendFlags |= ImGuiBackendFlags_HasMouseCursors;           // We can honor GetMouseCursor() values (optional)
 | 
				
			||||||
    io.BackendFlags |= ImGuiBackendFlags_HasSetMousePos;            // We can honor io.WantSetMousePos requests (optional, rarely used)
 | 
					    io.BackendFlags |= ImGuiBackendFlags_HasSetMousePos;            // We can honor io.WantSetMousePos requests (optional, rarely used)
 | 
				
			||||||
    if (mouse_can_use_global_state)
 | 
					    if (mouse_can_use_global_state)
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        io.BackendFlags |= ImGuiBackendFlags_PlatformHasViewports;  // We can create multi-viewports on the Platform side (optional)
 | 
					        io.BackendFlags |= ImGuiBackendFlags_PlatformHasViewports;  // We can create multi-viewports on the Platform side (optional)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // SDL on Linux/OSX doesn't report events for unfocused windows (see https://github.com/ocornut/imgui/issues/4960)
 | 
				
			||||||
 | 
					#ifdef _WIN32
 | 
				
			||||||
 | 
					    if (mouse_can_use_global_state)
 | 
				
			||||||
        io.BackendFlags |= ImGuiBackendFlags_HasMouseHoveredViewport;// We can call io.AddMouseViewportEvent() with correct data (optional)
 | 
					        io.BackendFlags |= ImGuiBackendFlags_HasMouseHoveredViewport;// We can call io.AddMouseViewportEvent() with correct data (optional)
 | 
				
			||||||
    }
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bd->Window = window;
 | 
					    bd->Window = window;
 | 
				
			||||||
    bd->MouseCanUseGlobalState = mouse_can_use_global_state;
 | 
					    bd->MouseCanUseGlobalState = mouse_can_use_global_state;
 | 
				
			||||||
@@ -528,11 +531,14 @@ static void ImGui_ImplSDL2_UpdateMouseData()
 | 
				
			|||||||
    //       for docking, the viewport has the _NoInputs flag in order to allow us to find the viewport under), then Dear ImGui is forced to ignore the value reported
 | 
					    //       for docking, the viewport has the _NoInputs flag in order to allow us to find the viewport under), then Dear ImGui is forced to ignore the value reported
 | 
				
			||||||
    //       by the backend, and use its flawed heuristic to guess the viewport behind.
 | 
					    //       by the backend, and use its flawed heuristic to guess the viewport behind.
 | 
				
			||||||
    // - [X] SDL backend correctly reports this regardless of another viewport behind focused and dragged from (we need this to find a useful drag and drop target).
 | 
					    // - [X] SDL backend correctly reports this regardless of another viewport behind focused and dragged from (we need this to find a useful drag and drop target).
 | 
				
			||||||
    ImGuiID mouse_viewport_id = 0;
 | 
					    if (io.BackendFlags & ImGuiBackendFlags_HasMouseHoveredViewport)
 | 
				
			||||||
    if (SDL_Window* sdl_mouse_window = SDL_GetWindowFromID(bd->MouseWindowID))
 | 
					    {
 | 
				
			||||||
        if (ImGuiViewport* mouse_viewport = ImGui::FindViewportByPlatformHandle((void*)sdl_mouse_window))
 | 
					        ImGuiID mouse_viewport_id = 0;
 | 
				
			||||||
            mouse_viewport_id = mouse_viewport->ID;
 | 
					        if (SDL_Window* sdl_mouse_window = SDL_GetWindowFromID(bd->MouseWindowID))
 | 
				
			||||||
    io.AddMouseViewportEvent(mouse_viewport_id);
 | 
					            if (ImGuiViewport* mouse_viewport = ImGui::FindViewportByPlatformHandle((void*)sdl_mouse_window))
 | 
				
			||||||
 | 
					                mouse_viewport_id = mouse_viewport->ID;
 | 
				
			||||||
 | 
					        io.AddMouseViewportEvent(mouse_viewport_id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void ImGui_ImplSDL2_UpdateMouseCursor()
 | 
					static void ImGui_ImplSDL2_UpdateMouseCursor()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user