Files
XCEngine/new_editor/app/State/EditorCommandFocusService.h

43 lines
1.1 KiB
C++

#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