Refactor new editor boundaries and test ownership
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "Project/EditorProjectRuntime.h"
|
||||
#include "ProjectBrowserModel.h"
|
||||
#include "Features/PanelInputContext.h"
|
||||
|
||||
#include "Commands/EditorEditCommandRoute.h"
|
||||
#include <XCEditor/Collections/UIEditorGridDragDrop.h>
|
||||
@@ -16,6 +17,7 @@
|
||||
#include <XCEngine/UI/Widgets/UIExpansionModel.h>
|
||||
#include <XCEngine/UI/Widgets/UISelectionModel.h>
|
||||
|
||||
#include <chrono>
|
||||
#include <cstdint>
|
||||
#include <filesystem>
|
||||
#include <memory>
|
||||
@@ -28,6 +30,17 @@ namespace XCEngine::UI::Editor::App {
|
||||
|
||||
class BuiltInIcons;
|
||||
class EditorCommandFocusService;
|
||||
|
||||
} // namespace XCEngine::UI::Editor::App
|
||||
|
||||
namespace XCEngine::UI::Editor::Ports {
|
||||
|
||||
class SystemInteractionPort;
|
||||
|
||||
} // namespace XCEngine::UI::Editor::Ports
|
||||
|
||||
namespace XCEngine::UI::Editor::App {
|
||||
|
||||
class ProjectPanel final : public EditorEditCommandRoute {
|
||||
public:
|
||||
enum class CursorKind : std::uint8_t {
|
||||
@@ -71,14 +84,14 @@ public:
|
||||
void Initialize(const std::filesystem::path& repoRoot);
|
||||
void SetProjectRuntime(EditorProjectRuntime* projectRuntime);
|
||||
void SetCommandFocusService(EditorCommandFocusService* commandFocusService);
|
||||
void SetSystemInteractionHost(Ports::SystemInteractionPort* systemInteractionHost);
|
||||
void SetBuiltInIcons(const BuiltInIcons* icons);
|
||||
void SetTextMeasurer(const ::XCEngine::UI::Editor::UIEditorTextMeasurer* textMeasurer);
|
||||
void ResetInteractionState();
|
||||
void Update(
|
||||
const UIEditorPanelContentHostFrame& contentHostFrame,
|
||||
const std::vector<::XCEngine::UI::UIInputEvent>& inputEvents,
|
||||
bool allowInteraction,
|
||||
bool panelActive);
|
||||
const PanelInputContext& inputContext);
|
||||
void Append(::XCEngine::UI::UIDrawList& drawList) const;
|
||||
|
||||
CursorKind GetCursorKind() const;
|
||||
@@ -205,8 +218,7 @@ private:
|
||||
std::vector<::XCEngine::UI::UIInputEvent> BuildTreeInteractionInputEvents(
|
||||
const std::vector<::XCEngine::UI::UIInputEvent>& inputEvents,
|
||||
const ::XCEngine::UI::UIRect& bounds,
|
||||
bool allowInteraction,
|
||||
bool panelActive) const;
|
||||
const PanelInputContext& inputContext) const;
|
||||
void ClaimCommandFocus(
|
||||
const std::vector<::XCEngine::UI::UIInputEvent>& inputEvents,
|
||||
const ::XCEngine::UI::UIRect& bounds,
|
||||
@@ -231,6 +243,7 @@ private:
|
||||
std::unique_ptr<EditorProjectRuntime> m_ownedProjectRuntime = {};
|
||||
EditorProjectRuntime* m_projectRuntime = nullptr;
|
||||
EditorCommandFocusService* m_commandFocusService = nullptr;
|
||||
Ports::SystemInteractionPort* m_systemInteractionHost = nullptr;
|
||||
const BuiltInIcons* m_icons = nullptr;
|
||||
const ::XCEngine::UI::Editor::UIEditorTextMeasurer* m_textMeasurer = nullptr;
|
||||
::XCEngine::UI::Widgets::UISelectionModel m_folderSelection = {};
|
||||
@@ -252,7 +265,7 @@ private:
|
||||
std::string m_hoveredAssetItemId = {};
|
||||
std::string m_lastPrimaryClickedAssetId = {};
|
||||
float m_navigationWidth = 248.0f;
|
||||
std::uint64_t m_lastPrimaryClickTimeMs = 0u;
|
||||
std::chrono::steady_clock::time_point m_lastPrimaryClickTime = {};
|
||||
std::size_t m_hoveredBreadcrumbIndex = static_cast<std::size_t>(-1);
|
||||
std::size_t m_pressedBreadcrumbIndex = static_cast<std::size_t>(-1);
|
||||
bool m_visible = false;
|
||||
|
||||
Reference in New Issue
Block a user