Harden editor app windowing boundary
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
#include "Windowing/EditorWindowManager.h"
|
||||
|
||||
#include "Windowing/Content/EditorWindowContentController.h"
|
||||
#include "Windowing/Content/EditorWindowContentFactory.h"
|
||||
#include "Windowing/Coordinator/EditorWindowLifecycleCoordinator.h"
|
||||
#include "Windowing/Coordinator/EditorUtilityWindowCoordinator.h"
|
||||
#include "Windowing/Coordinator/EditorWindowWorkspaceCoordinator.h"
|
||||
@@ -16,10 +18,16 @@ EditorWindowManager::EditorWindowManager(
|
||||
EditorWindowHostRuntimeServices& hostRuntime)
|
||||
: m_editorContext(editorContext)
|
||||
, m_hostRuntime(hostRuntime) {
|
||||
m_contentFactory = CreateDefaultEditorWindowContentFactory(windowSystem);
|
||||
m_workspaceCoordinator =
|
||||
std::make_unique<EditorWindowWorkspaceCoordinator>(m_hostRuntime, windowSystem);
|
||||
std::make_unique<EditorWindowWorkspaceCoordinator>(
|
||||
m_hostRuntime,
|
||||
windowSystem,
|
||||
*m_contentFactory);
|
||||
m_utilityCoordinator =
|
||||
std::make_unique<EditorUtilityWindowCoordinator>(m_hostRuntime);
|
||||
std::make_unique<EditorUtilityWindowCoordinator>(
|
||||
m_hostRuntime,
|
||||
*m_contentFactory);
|
||||
m_lifecycleCoordinator = std::make_unique<EditorWindowLifecycleCoordinator>(
|
||||
m_hostRuntime,
|
||||
*m_workspaceCoordinator);
|
||||
@@ -33,8 +41,19 @@ EditorWindowManager::~EditorWindowManager() = default;
|
||||
EditorHostWindow* EditorWindowManager::CreateWorkspaceWindow(
|
||||
const UIEditorWindowWorkspaceState& windowState,
|
||||
const EditorWindowCreateParams& params) {
|
||||
EditorHostWindow* const window =
|
||||
m_hostRuntime.CreateWorkspaceWindow(windowState, params);
|
||||
if (m_contentFactory == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
if (windowState.windowId.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
if (!params.windowId.empty() && windowState.windowId != params.windowId) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
EditorHostWindow* const window = m_hostRuntime.CreateHostWindow(
|
||||
m_contentFactory->CreateWorkspaceContentController(windowState),
|
||||
params);
|
||||
if (window != nullptr) {
|
||||
m_workspaceCoordinator->RegisterExistingWindow(*window);
|
||||
}
|
||||
@@ -44,7 +63,13 @@ EditorHostWindow* EditorWindowManager::CreateWorkspaceWindow(
|
||||
EditorHostWindow* EditorWindowManager::CreateUtilityWindow(
|
||||
const EditorUtilityWindowDescriptor& descriptor,
|
||||
const EditorWindowCreateParams& params) {
|
||||
EditorHostWindow* const window = m_hostRuntime.CreateUtilityWindow(descriptor, params);
|
||||
if (m_contentFactory == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
EditorHostWindow* const window = m_hostRuntime.CreateHostWindow(
|
||||
m_contentFactory->CreateUtilityContentController(descriptor),
|
||||
params);
|
||||
if (window != nullptr) {
|
||||
m_workspaceCoordinator->RegisterExistingWindow(*window);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user