#pragma once #ifndef NOMINMAX #define NOMINMAX #endif #include "UtilityWindows/EditorUtilityWindowKind.h" #include #include #include namespace XCEngine::UI::Editor::App { struct EditorWindowPanelTransferRequest { std::string nodeId = {}; std::string panelId = {}; POINT screenPoint = {}; bool IsValid() const { return !nodeId.empty() && !panelId.empty(); } }; struct EditorWindowOpenUtilityWindowRequest { EditorUtilityWindowKind kind = EditorUtilityWindowKind::None; POINT screenPoint = {}; bool useCursorPlacement = false; bool IsValid() const { return kind != EditorUtilityWindowKind::None; } }; struct EditorWorkspaceWindowFrameTransferRequests { std::optional beginGlobalTabDrag = {}; std::optional detachPanel = {}; bool HasPendingRequests() const { return beginGlobalTabDrag.has_value() || detachPanel.has_value(); } }; struct EditorUtilityWindowFrameTransferRequests { std::optional openUtilityWindow = {}; bool HasPendingRequests() const { return openUtilityWindow.has_value(); } }; struct EditorWindowFrameTransferRequests { EditorWorkspaceWindowFrameTransferRequests workspace = {}; EditorUtilityWindowFrameTransferRequests utility = {}; bool HasPendingRequests() const { return workspace.HasPendingRequests() || utility.HasPendingRequests(); } }; } // namespace XCEngine::UI::Editor::App