43 lines
1.1 KiB
C
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
|