Add workspace panel overlay routing

This commit is contained in:
2026-04-29 17:34:31 +08:00
parent 4a125cbe7f
commit f74503c2a5
21 changed files with 458 additions and 53 deletions

View File

@@ -2,6 +2,7 @@
#include <XCEditor/Panels/UIEditorPanelContentHost.h>
#include <XCEditor/Docking/UIEditorDockHost.h>
#include <XCEditor/Workspace/UIEditorWorkspacePanelOverlay.h>
#include <XCEngine/UI/Types.h>
@@ -44,6 +45,7 @@ bool IsUIEditorWorkspaceViewportInputOwner(
UIEditorWorkspaceInputOwner ResolveUIEditorWorkspacePointerInputOwner(
const Widgets::UIEditorDockHostLayout& dockHostLayout,
const UIEditorPanelContentHostFrame& contentHostFrame,
const std::vector<UIEditorWorkspacePanelOverlayRegion>& panelOverlayRegions,
const ::XCEngine::UI::UIPoint& pointerPosition);
UIEditorWorkspaceInputOwner NormalizeUIEditorWorkspaceInputOwner(

View File

@@ -5,6 +5,7 @@
#include <XCEditor/Panels/UIEditorPanelHostLifecycle.h>
#include <XCEditor/Workspace/UIEditorWorkspaceCompose.h>
#include <XCEditor/Workspace/UIEditorWorkspaceInputOwner.h>
#include <XCEditor/Workspace/UIEditorWorkspacePanelOverlay.h>
#include <XCEngine/UI/Types.h>
@@ -15,6 +16,7 @@ namespace XCEngine::UI::Editor {
struct UIEditorWorkspaceInteractionModel {
std::vector<UIEditorWorkspacePanelPresentationModel> workspacePresentations = {};
std::vector<UIEditorWorkspacePanelOverlayRegion> panelOverlayRegions = {};
};
struct UIEditorWorkspaceInteractionState {

View File

@@ -0,0 +1,15 @@
#pragma once
#include <XCEngine/UI/Types.h>
#include <string>
namespace XCEngine::UI::Editor {
struct UIEditorWorkspacePanelOverlayRegion {
std::string panelId = {};
::XCEngine::UI::UIRect bounds = {};
bool interactive = true;
};
} // namespace XCEngine::UI::Editor