new_editor: stabilize resize lifecycle groundwork

This commit is contained in:
2026-04-23 00:36:28 +08:00
parent c10367a42e
commit 03e0b362f7
19 changed files with 439 additions and 161 deletions

View File

@@ -5,6 +5,7 @@
#endif
#include "Platform/Win32/EditorWindowPointerCapture.h"
#include "Platform/Win32/EditorWindowState.h"
#include "Platform/Win32/EditorWindowTransferRequests.h"
#include <windows.h>
@@ -88,8 +89,10 @@ public:
std::string_view GetWindowId() const;
HWND GetHwnd() const;
bool HasHwnd() const;
EditorWindowLifecycleState GetLifecycleState() const;
bool IsPrimary() const;
bool IsClosing() const;
bool IsDestroyed() const;
const std::wstring& GetTitle() const;
const UIEditorWorkspaceController* TryGetWorkspaceController() const;
const UIEditorWorkspaceController& GetWorkspaceController() const;
@@ -122,9 +125,10 @@ private:
void ClearExternalDockHostDropPreview();
void AttachHwnd(HWND hwnd);
void MarkInitializing();
void MarkRunning();
void MarkDestroyed();
void MarkClosing();
void ClearClosing();
void SetPrimary(bool primary);
void SetTrackingMouseLeave(bool trackingMouseLeave);
void SetTitle(std::wstring title);
@@ -145,6 +149,10 @@ private:
EditorWindowFrameTransferRequests OnPaintMessage(
EditorContext& editorContext,
bool globalTabDragActive);
void QueueCompletedImmediateFrame(
EditorWindowFrameTransferRequests transferRequests);
bool HasQueuedCompletedImmediateFrame() const;
EditorWindowFrameTransferRequests ConsumeQueuedCompletedImmediateFrameTransferRequests();
bool OnResize(UINT width, UINT height);
void OnEnterSizeMove();
bool OnExitSizeMove();
@@ -256,6 +264,8 @@ private:
std::unique_ptr<EditorWindowFrameOrchestrator> m_frameOrchestrator = {};
std::unique_ptr<EditorWindowInputController> m_inputController = {};
std::unique_ptr<EditorWindowRuntimeController> m_runtime = {};
EditorWindowFrameTransferRequests m_queuedImmediateFrameTransferRequests = {};
bool m_hasQueuedCompletedImmediateFrame = false;
};
} // namespace XCEngine::UI::Editor::App