#pragma once #include "State/EditorSession.h" namespace XCEngine::UI::Editor::App { class EditorCommandFocusService { public: EditorActionRoute GetExplicitRoute() const { return m_explicitRoute; } bool HasExplicitRoute() const { return m_explicitRoute != EditorActionRoute::None; } EditorActionRoute ResolveRoute( EditorActionRoute fallbackRoute = EditorActionRoute::None) const { return HasExplicitRoute() ? m_explicitRoute : fallbackRoute; } bool ClaimFocus(EditorActionRoute route) { if (route == EditorActionRoute::None) { return false; } const bool changed = m_explicitRoute != route; m_explicitRoute = route; return changed; } void ClearFocus(EditorActionRoute route = EditorActionRoute::None) { if (route == EditorActionRoute::None || m_explicitRoute == route) { m_explicitRoute = EditorActionRoute::None; } } private: EditorActionRoute m_explicitRoute = EditorActionRoute::None; }; } // namespace XCEngine::UI::Editor::App