Refactor new editor state ownership model

This commit is contained in:
2026-04-19 04:36:52 +08:00
parent 48bfde28e3
commit f45b34a03a
46 changed files with 1979 additions and 217 deletions

View File

@@ -0,0 +1,42 @@
#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