mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Viewports: fix window with viewport ini data immediately merged into a host viewport from leaving a temporary viewport alive for a frame (would leak into backend).
This commit is contained in:
		@@ -152,6 +152,8 @@ Docking+Viewports Branch:
 | 
				
			|||||||
  It would manifest when e.g. reconfiguring dock nodes while dragging.
 | 
					  It would manifest when e.g. reconfiguring dock nodes while dragging.
 | 
				
			||||||
- Viewports: Fixed unnecessary creation of temporary viewports when multiple docked windows
 | 
					- Viewports: Fixed unnecessary creation of temporary viewports when multiple docked windows
 | 
				
			||||||
  got reassigned to a new node (created mid-frame) which already has a HostWindow.
 | 
					  got reassigned to a new node (created mid-frame) which already has a HostWindow.
 | 
				
			||||||
 | 
					- Viewports: Fixed window with viewport ini data immediately merged into a host viewport from
 | 
				
			||||||
 | 
					  leaving a temporary viewport alive for a frame (would leak into backend).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-----------------------------------------------------------------------
 | 
					-----------------------------------------------------------------------
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11574,6 +11574,10 @@ void ImGui::SetCurrentViewport(ImGuiWindow* current_window, ImGuiViewportP* view
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void SetWindowViewport(ImGuiWindow* window, ImGuiViewportP* viewport)
 | 
					static void SetWindowViewport(ImGuiWindow* window, ImGuiViewportP* viewport)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    // Abandon viewport
 | 
				
			||||||
 | 
					    if (window->ViewportOwned && window->Viewport->Window == window)
 | 
				
			||||||
 | 
					        window->Viewport->Size = ImVec2(0.0f, 0.0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    window->Viewport = viewport;
 | 
					    window->Viewport = viewport;
 | 
				
			||||||
    window->ViewportId = viewport->ID;
 | 
					    window->ViewportId = viewport->ID;
 | 
				
			||||||
    window->ViewportOwned = (viewport->Window == window);
 | 
					    window->ViewportOwned = (viewport->Window == window);
 | 
				
			||||||
@@ -11606,6 +11610,7 @@ static bool ImGui::UpdateTryMergeWindowIntoHostViewport(ImGuiWindow* window, ImG
 | 
				
			|||||||
    if (GetWindowAlwaysWantOwnViewport(window))
 | 
					    if (GetWindowAlwaysWantOwnViewport(window))
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // FIXME: Can't use g.WindowsFocusOrder[] for root windows only as we care about Z order. If we maintained a DisplayOrder along with FocusOrder we could..
 | 
				
			||||||
    for (int n = 0; n < g.Windows.Size; n++)
 | 
					    for (int n = 0; n < g.Windows.Size; n++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        ImGuiWindow* window_behind = g.Windows[n];
 | 
					        ImGuiWindow* window_behind = g.Windows[n];
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user