Harden editor app windowing boundary
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
#include "Platform/Win32/Windowing/EditorWindowHostRuntime.h"
|
||||
|
||||
#include "Bootstrap/EditorResources.h"
|
||||
#include "Composition/EditorContext.h"
|
||||
#include "Platform/Win32/Chrome/EditorWindowChromeController.h"
|
||||
#include "Platform/Win32/Windowing/EditorFloatingWindowPlacement.h"
|
||||
#include "Platform/Win32/Windowing/EditorWindow.h"
|
||||
#include "Windowing/Content/EditorWindowContentFactory.h"
|
||||
#include "Windowing/Content/EditorWindowContentController.h"
|
||||
#include "Windowing/Host/EditorWindowHostCoordinator.h"
|
||||
#include "Platform/Win32/Runtime/EditorWindowFrameDriver.h"
|
||||
@@ -57,16 +55,14 @@ std::string DescribeHostWindows(
|
||||
EditorWindowHostRuntime::EditorWindowHostRuntime(
|
||||
EditorWindowHostConfig hostConfig,
|
||||
std::filesystem::path repoRoot,
|
||||
EditorContext& editorContext,
|
||||
EditorWindowContentFactory& contentFactory)
|
||||
std::filesystem::path captureRoot)
|
||||
: m_hostConfig(hostConfig),
|
||||
m_repoRoot(std::move(repoRoot)),
|
||||
m_editorContext(editorContext),
|
||||
m_contentFactory(contentFactory) {}
|
||||
m_captureRoot(std::move(captureRoot)) {}
|
||||
|
||||
EditorWindowHostRuntime::~EditorWindowHostRuntime() = default;
|
||||
|
||||
EditorWindow* EditorWindowHostRuntime::CreateEditorWindow(
|
||||
EditorWindow* EditorWindowHostRuntime::CreateHostWindow(
|
||||
std::unique_ptr<EditorWindowContentController> contentController,
|
||||
const EditorWindowCreateParams& params) {
|
||||
if (contentController == nullptr) {
|
||||
@@ -177,10 +173,14 @@ EditorWindow* EditorWindowHostRuntime::CreateEditorWindow(
|
||||
SendMessageW(hwnd, WM_SETICON, ICON_SMALL, reinterpret_cast<LPARAM>(smallIcon));
|
||||
}
|
||||
|
||||
if (m_hostCoordinator == nullptr) {
|
||||
return failWindowInitialization("managed window initialization failed: coordinator missing");
|
||||
}
|
||||
|
||||
if (!rawWindow->Initialize(
|
||||
m_repoRoot,
|
||||
m_editorContext,
|
||||
m_editorContext.GetShellAsset().captureRootPath,
|
||||
m_hostCoordinator->GetEditorContext(),
|
||||
m_captureRoot,
|
||||
params.autoCaptureOnStartup)) {
|
||||
return failWindowInitialization("managed window initialization failed");
|
||||
}
|
||||
@@ -190,35 +190,6 @@ EditorWindow* EditorWindowHostRuntime::CreateEditorWindow(
|
||||
return rawWindow;
|
||||
}
|
||||
|
||||
EditorWindow* EditorWindowHostRuntime::CreateWorkspaceWindow(
|
||||
const UIEditorWindowWorkspaceState& windowState,
|
||||
const EditorWindowCreateParams& params) {
|
||||
if (windowState.windowId.empty()) {
|
||||
LogRuntimeTrace("window", "workspace window creation rejected: state missing window id");
|
||||
return nullptr;
|
||||
}
|
||||
if (!params.windowId.empty() && windowState.windowId != params.windowId) {
|
||||
LogRuntimeTrace(
|
||||
"window",
|
||||
"workspace window creation rejected: state window id '" +
|
||||
windowState.windowId + "' does not match create params '" +
|
||||
params.windowId + "'");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return CreateEditorWindow(
|
||||
m_contentFactory.CreateWorkspaceContentController(windowState),
|
||||
params);
|
||||
}
|
||||
|
||||
EditorWindow* EditorWindowHostRuntime::CreateUtilityWindow(
|
||||
const EditorUtilityWindowDescriptor& descriptor,
|
||||
const EditorWindowCreateParams& params) {
|
||||
return CreateEditorWindow(
|
||||
m_contentFactory.CreateUtilityContentController(descriptor),
|
||||
params);
|
||||
}
|
||||
|
||||
void EditorWindowHostRuntime::BindHostCoordinator(
|
||||
EditorWindowHostCoordinator& hostCoordinator) {
|
||||
m_hostCoordinator = &hostCoordinator;
|
||||
@@ -370,7 +341,7 @@ void EditorWindowHostRuntime::RenderAllWindows() {
|
||||
EditorWindowFrameTransferRequests transferRequests =
|
||||
EditorWindowFrameDriver::DriveFrame(
|
||||
*window,
|
||||
m_editorContext,
|
||||
m_hostCoordinator->GetEditorContext(),
|
||||
m_hostCoordinator->IsGlobalTabDragActive());
|
||||
m_hostCoordinator->RefreshWindowPresentation(*window);
|
||||
if (!transferRequests.HasPendingRequests()) {
|
||||
|
||||
Reference in New Issue
Block a user