Refactor new editor state ownership model
This commit is contained in:
42
new_editor/app/State/EditorCommandFocusService.h
Normal file
42
new_editor/app/State/EditorCommandFocusService.h
Normal 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
|
||||
Reference in New Issue
Block a user