Viewports: fixed an issue where window repositioning leading to a monitor change could have the window incorrectly get clamped within the boundaries of its previous monitor. (#8484)

This commit is contained in:
ocornut
2025-03-11 13:16:40 +01:00
parent 6972b6c380
commit 2d403a1614
2 changed files with 7 additions and 0 deletions

View File

@@ -16144,11 +16144,15 @@ ImGuiViewportP* ImGui::AddUpdateViewport(ImGuiWindow* window, ImGuiID id, const
if (viewport)
{
// Always update for main viewport as we are already pulling correct platform pos/size (see #4900)
ImVec2 prev_pos = viewport->Pos;
ImVec2 prev_size = viewport->Size;
if (!viewport->PlatformRequestMove || viewport->ID == IMGUI_VIEWPORT_DEFAULT_ID)
viewport->Pos = pos;
if (!viewport->PlatformRequestResize || viewport->ID == IMGUI_VIEWPORT_DEFAULT_ID)
viewport->Size = size;
viewport->Flags = flags | (viewport->Flags & (ImGuiViewportFlags_IsMinimized | ImGuiViewportFlags_IsFocused)); // Preserve existing flags
if (prev_pos != viewport->Pos || prev_size != viewport->Size)
UpdateViewportPlatformMonitor(viewport);
}
else
{