#pragma once #include #include #include #include #include #include #include namespace XCEngine::UI::Editor { struct UIEditorDockHostTabStripInteractionEntry { std::string nodeId = {}; UIEditorTabStripInteractionState state = {}; }; struct UIEditorDockHostInteractionState { Widgets::UIEditorDockHostState dockHostState = {}; ::XCEngine::UI::Widgets::UISplitterDragState splitterDragState = {}; std::vector tabStripInteractions = {}; std::string activeTabDragNodeId = {}; std::string activeTabDragPanelId = {}; ::XCEngine::UI::UIPoint pointerPosition = {}; bool hasPointerPosition = false; }; struct UIEditorDockHostInteractionResult { bool consumed = false; bool commandExecuted = false; bool layoutChanged = false; bool requestPointerCapture = false; bool releasePointerCapture = false; Widgets::UIEditorDockHostHitTarget hitTarget = {}; std::string activeSplitterNodeId = {}; UIEditorWorkspaceCommandResult commandResult = {}; UIEditorWorkspaceLayoutOperationResult layoutResult = {}; }; struct UIEditorDockHostInteractionFrame { Widgets::UIEditorDockHostLayout layout = {}; UIEditorDockHostInteractionResult result = {}; bool focused = false; }; UIEditorDockHostInteractionFrame UpdateUIEditorDockHostInteraction( UIEditorDockHostInteractionState& state, UIEditorWorkspaceController& controller, const ::XCEngine::UI::UIRect& bounds, const std::vector<::XCEngine::UI::UIInputEvent>& inputEvents, const Widgets::UIEditorDockHostMetrics& metrics = {}); } // namespace XCEngine::UI::Editor