fix(new_editor): reduce live resize jitter

This commit is contained in:
2026-04-22 21:08:36 +08:00
parent 34c635ba22
commit ad98660b1d
13 changed files with 232 additions and 33 deletions

View File

@@ -1,13 +1,15 @@
#include "Platform/Win32/EditorWindowFrameDriver.h"
#include "Platform/Win32/EditorWindowChromeController.h"
#include "Platform/Win32/EditorWindow.h"
namespace XCEngine::UI::Editor::App {
EditorWindowFrameTransferRequests EditorWindowFrameDriver::DriveFrame(
EditorWindowFrameTransferRequests EditorWindowFrameDriver::DriveFrameInternal(
EditorWindow& window,
EditorContext& editorContext,
bool globalTabDragActive) {
bool globalTabDragActive,
bool requestSkipNextSteadyStateFrame) {
if (!window.IsRenderReady() ||
window.GetHwnd() == nullptr ||
window.IsClosing()) {
@@ -20,8 +22,25 @@ EditorWindowFrameTransferRequests EditorWindowFrameDriver::DriveFrame(
hwnd != nullptr && IsWindow(hwnd)) {
ValidateRect(hwnd, nullptr);
}
if (requestSkipNextSteadyStateFrame) {
window.m_chromeController->RequestSkipNextSteadyStateFrame();
}
return transferRequests;
}
EditorWindowFrameTransferRequests EditorWindowFrameDriver::DriveFrame(
EditorWindow& window,
EditorContext& editorContext,
bool globalTabDragActive) {
return DriveFrameInternal(window, editorContext, globalTabDragActive, false);
}
EditorWindowFrameTransferRequests EditorWindowFrameDriver::DriveImmediateFrame(
EditorWindow& window,
EditorContext& editorContext,
bool globalTabDragActive) {
return DriveFrameInternal(window, editorContext, globalTabDragActive, true);
}
} // namespace XCEngine::UI::Editor::App