@ -6040,17 +6040,18 @@ void ImGui::FocusWindow(ImGuiWindow* window)
// Move the root window to the top of the pile
IM_ASSERT ( window - > RootWindow ! = NULL ) ;
window = window - > RootWindow ;
ImGuiWindow * focus_front_window = window - > RootWindow ; // NB: In docking branch this is window->RootWindowDockStop
ImGuiWindow * display_front_window = window - > RootWindow ;
// Steal focus on active widgets
if ( window- > Flags & ImGuiWindowFlags_Popup ) // FIXME: This statement should be unnecessary. Need further testing before removing it..
if ( g . ActiveId ! = 0 & & g . ActiveIdWindow & & g . ActiveIdWindow - > RootWindow ! = window)
if ( focus_front_ window- > Flags & ImGuiWindowFlags_Popup ) // FIXME: This statement may be unnecessary? Need further testing before removing it..
if ( g . ActiveId ! = 0 & & g . ActiveIdWindow & & g . ActiveIdWindow - > RootWindow ! = focus_front_ window)
ClearActiveID ( ) ;
// Bring to front
BringWindowToFocusFront ( window) ;
if ( ! ( window- > Flags & ImGuiWindowFlags_NoBringToFrontOnFocus ) )
BringWindowToDisplayFront ( window) ;
BringWindowToFocusFront ( focus_front_ window) ;
if ( ( display_front_ window- > Flags & ImGuiWindowFlags_NoBringToFrontOnFocus ) = = 0 )
BringWindowToDisplayFront ( display_front_ window) ;
}
void ImGui : : FocusTopMostWindowUnderOne ( ImGuiWindow * under_this_window , ImGuiWindow * ignore_window )