mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-22 03:47:00 +00:00
Viewports: Fixed translating a host viewport from briefly altering the size of AlwaysAutoResize windows. (#5057)
This commit is contained in:
parent
64519c6875
commit
8639a2f9f8
@ -134,6 +134,7 @@ Docking+Viewports Branch:
|
|||||||
|
|
||||||
- Docking: Fixed floating docked nodes not being clamped into viewport workrect to stay reachable
|
- Docking: Fixed floating docked nodes not being clamped into viewport workrect to stay reachable
|
||||||
when g.ConfigWindowsMoveFromTitleBarOnly is set and multi-viewports are disabled. (#5044)
|
when g.ConfigWindowsMoveFromTitleBarOnly is set and multi-viewports are disabled. (#5044)
|
||||||
|
- Viewports: Fixed translating a host viewport from briefly altering the size of AlwaysAutoResize windows. (#5057)
|
||||||
- Viewports: Fixed main viewport size not matching ImDrawData::DisplaySize for one frame during resize
|
- Viewports: Fixed main viewport size not matching ImDrawData::DisplaySize for one frame during resize
|
||||||
when multi-viewports are disabled. (#4900)
|
when multi-viewports are disabled. (#4900)
|
||||||
|
|
||||||
|
@ -4063,6 +4063,8 @@ void ImGui::UpdateMouseMovingWindowEndFrame()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is called during NewFrame()->UpdateViewportsNewFrame() only.
|
||||||
|
// Need to keep in sync with SetWindowPos()
|
||||||
static void TranslateWindow(ImGuiWindow* window, const ImVec2& delta)
|
static void TranslateWindow(ImGuiWindow* window, const ImVec2& delta)
|
||||||
{
|
{
|
||||||
window->Pos += delta;
|
window->Pos += delta;
|
||||||
@ -4072,6 +4074,7 @@ static void TranslateWindow(ImGuiWindow* window, const ImVec2& delta)
|
|||||||
window->DC.CursorPos += delta;
|
window->DC.CursorPos += delta;
|
||||||
window->DC.CursorStartPos += delta;
|
window->DC.CursorStartPos += delta;
|
||||||
window->DC.CursorMaxPos += delta;
|
window->DC.CursorMaxPos += delta;
|
||||||
|
window->DC.IdealMaxPos += delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ScaleWindow(ImGuiWindow* window, float scale)
|
static void ScaleWindow(ImGuiWindow* window, float scale)
|
||||||
@ -7670,6 +7673,7 @@ void ImGui::SetWindowPos(ImGuiWindow* window, const ImVec2& pos, ImGuiCond cond)
|
|||||||
const ImVec2 old_pos = window->Pos;
|
const ImVec2 old_pos = window->Pos;
|
||||||
window->Pos = ImFloor(pos);
|
window->Pos = ImFloor(pos);
|
||||||
ImVec2 offset = window->Pos - old_pos;
|
ImVec2 offset = window->Pos - old_pos;
|
||||||
|
// FIXME: share code with TranslateWindow(), need to confirm whether the 3 rect modified by TranslateWindow() are desirable here.
|
||||||
window->DC.CursorPos += offset; // As we happen to move the window while it is being appended to (which is a bad idea - will smear) let's at least offset the cursor
|
window->DC.CursorPos += offset; // As we happen to move the window while it is being appended to (which is a bad idea - will smear) let's at least offset the cursor
|
||||||
window->DC.CursorMaxPos += offset; // And more importantly we need to offset CursorMaxPos/CursorStartPos this so ContentSize calculation doesn't get affected.
|
window->DC.CursorMaxPos += offset; // And more importantly we need to offset CursorMaxPos/CursorStartPos this so ContentSize calculation doesn't get affected.
|
||||||
window->DC.IdealMaxPos += offset;
|
window->DC.IdealMaxPos += offset;
|
||||||
|
Loading…
Reference in New Issue
Block a user