Files
XCEngine/new_editor/app/Platform/Win32/EditorWindowFrameDriver.cpp

47 lines
1.4 KiB
C++
Raw Normal View History

#include "Platform/Win32/EditorWindowFrameDriver.h"
#include "Platform/Win32/EditorWindowChromeController.h"
#include "Platform/Win32/EditorWindow.h"
namespace XCEngine::UI::Editor::App {
EditorWindowFrameTransferRequests EditorWindowFrameDriver::DriveFrameInternal(
EditorWindow& window,
EditorContext& editorContext,
bool globalTabDragActive,
bool requestSkipNextSteadyStateFrame) {
if (!window.IsRenderReady() ||
window.GetHwnd() == nullptr ||
window.IsClosing()) {
return {};
}
EditorWindowFrameTransferRequests transferRequests =
window.RenderFrame(editorContext, globalTabDragActive);
if (const HWND hwnd = window.GetHwnd();
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