Refine editor tree alignment and project panel events

This commit is contained in:
2026-04-11 22:31:14 +08:00
parent 8848cfd958
commit 0ff02150c0
6 changed files with 219 additions and 35 deletions

View File

@@ -328,6 +328,65 @@ std::string DescribeInputEventType(const UIInputEvent& event) {
}
}
std::string DescribeProjectPanelEvent(const App::ProductProjectPanel::Event& event) {
std::ostringstream stream = {};
switch (event.kind) {
case App::ProductProjectPanel::EventKind::AssetSelected:
stream << "AssetSelected";
break;
case App::ProductProjectPanel::EventKind::AssetSelectionCleared:
stream << "AssetSelectionCleared";
break;
case App::ProductProjectPanel::EventKind::FolderNavigated:
stream << "FolderNavigated";
break;
case App::ProductProjectPanel::EventKind::AssetOpened:
stream << "AssetOpened";
break;
case App::ProductProjectPanel::EventKind::ContextMenuRequested:
stream << "ContextMenuRequested";
break;
case App::ProductProjectPanel::EventKind::None:
default:
stream << "None";
break;
}
stream << " source=";
switch (event.source) {
case App::ProductProjectPanel::EventSource::Tree:
stream << "Tree";
break;
case App::ProductProjectPanel::EventSource::Breadcrumb:
stream << "Breadcrumb";
break;
case App::ProductProjectPanel::EventSource::GridPrimary:
stream << "GridPrimary";
break;
case App::ProductProjectPanel::EventSource::GridDoubleClick:
stream << "GridDoubleClick";
break;
case App::ProductProjectPanel::EventSource::GridSecondary:
stream << "GridSecondary";
break;
case App::ProductProjectPanel::EventSource::Background:
stream << "Background";
break;
case App::ProductProjectPanel::EventSource::None:
default:
stream << "None";
break;
}
if (!event.itemId.empty()) {
stream << " item=" << event.itemId;
}
if (!event.displayName.empty()) {
stream << " label=" << event.displayName;
}
return stream.str();
}
std::vector<UIInputEvent> FilterShellInputEventsForHostedContentCapture(
const std::vector<UIInputEvent>& inputEvents) {
std::vector<UIInputEvent> filteredEvents = {};
@@ -568,6 +627,11 @@ void Application::RenderFrame() {
hostedContentEvents,
!m_shellFrame.result.workspaceInputSuppressed,
m_workspaceController.GetWorkspace().activePanelId == "project");
for (const App::ProductProjectPanel::Event& event : m_projectPanel.GetFrameEvents()) {
LogRuntimeTrace("project", DescribeProjectPanelEvent(event));
m_lastStatus = "Project";
m_lastMessage = DescribeProjectPanelEvent(event);
}
ApplyHostedContentCaptureRequests();
ApplyCurrentCursor();
const UIEditorShellComposeModel shellComposeModel =