mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Viewports: Fixed a CTRL+TAB crash with viewports enabled (#4023, #787) (amend 1dc3af3, 23ef6c1, 657073a)
				
					
				
			+ Expose FindHoveredViewportFromPlatformWindowStack() in imgui_internal.h
This commit is contained in:
		@@ -108,6 +108,11 @@ Other changes:
 | 
				
			|||||||
- Backends: Metal: Added Apple Metal C++ API support. (#4824, #4746) [@luigifcruz]
 | 
					- Backends: Metal: Added Apple Metal C++ API support. (#4824, #4746) [@luigifcruz]
 | 
				
			||||||
  Enable with '#define IMGUI_IMPL_METAL_CPP' in your imconfig.h file.
 | 
					  Enable with '#define IMGUI_IMPL_METAL_CPP' in your imconfig.h file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Docking+Viewports Branch:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Viewports: Fixed a CTRL+TAB crash with viewports enabled when the window list needs to appears in
 | 
				
			||||||
 | 
					  its own viewport (regression from 1.86). (#4023, #787)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-----------------------------------------------------------------------
 | 
					-----------------------------------------------------------------------
 | 
				
			||||||
 VERSION 1.86 (Released 2021-12-22)
 | 
					 VERSION 1.86 (Released 2021-12-22)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4700,7 +4700,7 @@ static void ImGui::RenderDimmedBackgrounds()
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        // Draw dimming behind CTRL+Tab target window and behind CTRL+Tab UI window
 | 
					        // Draw dimming behind CTRL+Tab target window and behind CTRL+Tab UI window
 | 
				
			||||||
        RenderDimmedBackgroundBehindWindow(g.NavWindowingTargetAnim, GetColorU32(ImGuiCol_NavWindowingDimBg, g.DimBgRatio));
 | 
					        RenderDimmedBackgroundBehindWindow(g.NavWindowingTargetAnim, GetColorU32(ImGuiCol_NavWindowingDimBg, g.DimBgRatio));
 | 
				
			||||||
        if (g.NavWindowingListWindow != NULL && g.NavWindowingListWindow->Viewport != g.NavWindowingTargetAnim->Viewport)
 | 
					        if (g.NavWindowingListWindow != NULL && g.NavWindowingListWindow->Viewport && g.NavWindowingListWindow->Viewport != g.NavWindowingTargetAnim->Viewport)
 | 
				
			||||||
            RenderDimmedBackgroundBehindWindow(g.NavWindowingListWindow, GetColorU32(ImGuiCol_NavWindowingDimBg, g.DimBgRatio));
 | 
					            RenderDimmedBackgroundBehindWindow(g.NavWindowingListWindow, GetColorU32(ImGuiCol_NavWindowingDimBg, g.DimBgRatio));
 | 
				
			||||||
        viewports_already_dimmed[0] = g.NavWindowingTargetAnim->Viewport;
 | 
					        viewports_already_dimmed[0] = g.NavWindowingTargetAnim->Viewport;
 | 
				
			||||||
        viewports_already_dimmed[1] = g.NavWindowingListWindow ? g.NavWindowingListWindow->Viewport : NULL;
 | 
					        viewports_already_dimmed[1] = g.NavWindowingListWindow ? g.NavWindowingListWindow->Viewport : NULL;
 | 
				
			||||||
@@ -12143,7 +12143,7 @@ void ImGui::ScaleWindowsInViewport(ImGuiViewportP* viewport, float scale)
 | 
				
			|||||||
// If the backend doesn't set MouseLastHoveredViewport or doesn't honor ImGuiViewportFlags_NoInputs, we do a search ourselves.
 | 
					// If the backend doesn't set MouseLastHoveredViewport or doesn't honor ImGuiViewportFlags_NoInputs, we do a search ourselves.
 | 
				
			||||||
// A) It won't take account of the possibility that non-imgui windows may be in-between our dragged window and our target window.
 | 
					// A) It won't take account of the possibility that non-imgui windows may be in-between our dragged window and our target window.
 | 
				
			||||||
// B) It requires Platform_GetWindowFocus to be implemented by backend.
 | 
					// B) It requires Platform_GetWindowFocus to be implemented by backend.
 | 
				
			||||||
static ImGuiViewportP* FindHoveredViewportFromPlatformWindowStack(const ImVec2 mouse_platform_pos)
 | 
					ImGuiViewportP* ImGui::FindHoveredViewportFromPlatformWindowStack(const ImVec2& mouse_platform_pos)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ImGuiContext& g = *GImGui;
 | 
					    ImGuiContext& g = *GImGui;
 | 
				
			||||||
    ImGuiViewportP* best_candidate = NULL;
 | 
					    ImGuiViewportP* best_candidate = NULL;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2694,7 +2694,8 @@ namespace ImGui
 | 
				
			|||||||
    IMGUI_API void          ScaleWindowsInViewport(ImGuiViewportP* viewport, float scale);
 | 
					    IMGUI_API void          ScaleWindowsInViewport(ImGuiViewportP* viewport, float scale);
 | 
				
			||||||
    IMGUI_API void          DestroyPlatformWindow(ImGuiViewportP* viewport);
 | 
					    IMGUI_API void          DestroyPlatformWindow(ImGuiViewportP* viewport);
 | 
				
			||||||
    IMGUI_API void          SetCurrentViewport(ImGuiWindow* window, ImGuiViewportP* viewport);
 | 
					    IMGUI_API void          SetCurrentViewport(ImGuiWindow* window, ImGuiViewportP* viewport);
 | 
				
			||||||
    IMGUI_API const ImGuiPlatformMonitor* GetViewportPlatformMonitor(ImGuiViewport* viewport);
 | 
					    IMGUI_API const ImGuiPlatformMonitor*   GetViewportPlatformMonitor(ImGuiViewport* viewport);
 | 
				
			||||||
 | 
					    IMGUI_API ImGuiViewportP*               FindHoveredViewportFromPlatformWindowStack(const ImVec2& mouse_platform_pos);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Settings
 | 
					    // Settings
 | 
				
			||||||
    IMGUI_API void                  MarkIniSettingsDirty();
 | 
					    IMGUI_API void                  MarkIniSettingsDirty();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user