new_editor: remove tree panel behavior layer
This commit is contained in:
@@ -8,7 +8,6 @@
|
||||
#include "Ports/SystemInteractionPort.h"
|
||||
#include "Project/EditorProjectRuntime.h"
|
||||
#include "State/EditorCommandFocusService.h"
|
||||
#include <XCEditor/Collections/UIEditorTreePanelBehavior.h>
|
||||
#include <XCEditor/Fields/UIEditorFieldStyle.h>
|
||||
#include <XCEditor/Foundation/UIEditorPanelInputFilter.h>
|
||||
#include <XCEditor/Fields/UIEditorTextField.h>
|
||||
@@ -478,12 +477,10 @@ UIRect ProjectPanel::BuildRenameBounds(
|
||||
}
|
||||
|
||||
const Widgets::UIEditorTextFieldMetrics hostedMetrics =
|
||||
BuildUIEditorPropertyGridTextFieldMetrics(
|
||||
ResolveUIEditorPropertyGridMetrics(),
|
||||
ResolveUIEditorTextFieldMetrics());
|
||||
ResolveUIEditorTreeViewHostedTextFieldMetrics();
|
||||
|
||||
if (surface == RenameSurface::Tree) {
|
||||
return BuildUIEditorTreePanelInlineRenameBounds(
|
||||
return BuildUIEditorTreeViewInlineRenameBounds(
|
||||
m_treeFrame.layout,
|
||||
GetWindowTreeItems(),
|
||||
itemId,
|
||||
@@ -541,28 +538,12 @@ bool ProjectPanel::TryStartQueuedRenameSession() {
|
||||
|
||||
const UIRect bounds =
|
||||
BuildRenameBounds(m_pendingRenameItemId, m_pendingRenameSurface);
|
||||
if (!HasValidBounds(bounds)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const Widgets::UIEditorTextFieldMetrics textFieldMetrics =
|
||||
BuildUIEditorInlineRenameTextFieldMetrics(
|
||||
bounds,
|
||||
BuildUIEditorPropertyGridTextFieldMetrics(
|
||||
ResolveUIEditorPropertyGridMetrics(),
|
||||
ResolveUIEditorTextFieldMetrics()));
|
||||
|
||||
UIEditorInlineRenameSessionRequest request = {};
|
||||
request.beginSession = true;
|
||||
request.itemId = m_pendingRenameItemId;
|
||||
request.initialText = initialText;
|
||||
request.bounds = bounds;
|
||||
m_renameFrame = UpdateUIEditorInlineRenameSession(
|
||||
m_renameState,
|
||||
request,
|
||||
{},
|
||||
textFieldMetrics);
|
||||
if (!m_renameFrame.result.sessionStarted) {
|
||||
if (!TryStartUIEditorTreeViewInlineRenameSession(
|
||||
m_renameState,
|
||||
m_renameFrame,
|
||||
m_pendingRenameItemId,
|
||||
std::move(initialText),
|
||||
bounds)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -579,27 +560,16 @@ void ProjectPanel::UpdateRenameSession(
|
||||
}
|
||||
|
||||
const UIRect bounds = BuildRenameBounds(m_renameState.itemId, m_activeRenameSurface);
|
||||
if (!HasValidBounds(bounds)) {
|
||||
if (!HasUIEditorTreeViewValidBounds(bounds)) {
|
||||
ClearRenameState();
|
||||
return;
|
||||
}
|
||||
|
||||
const Widgets::UIEditorTextFieldMetrics textFieldMetrics =
|
||||
BuildUIEditorInlineRenameTextFieldMetrics(
|
||||
bounds,
|
||||
BuildUIEditorPropertyGridTextFieldMetrics(
|
||||
ResolveUIEditorPropertyGridMetrics(),
|
||||
ResolveUIEditorTextFieldMetrics()));
|
||||
|
||||
UIEditorInlineRenameSessionRequest request = {};
|
||||
request.itemId = m_renameState.itemId;
|
||||
request.initialText = m_renameState.textFieldSpec.value;
|
||||
request.bounds = bounds;
|
||||
m_renameFrame = UpdateUIEditorInlineRenameSession(
|
||||
UpdateUIEditorTreeViewInlineRenameSession(
|
||||
m_renameState,
|
||||
request,
|
||||
inputEvents,
|
||||
textFieldMetrics);
|
||||
m_renameFrame,
|
||||
bounds,
|
||||
inputEvents);
|
||||
if (!m_renameFrame.result.sessionCommitted) {
|
||||
if (m_renameFrame.result.sessionCanceled) {
|
||||
m_activeRenameSurface = RenameSurface::None;
|
||||
@@ -1066,20 +1036,13 @@ std::vector<UIInputEvent> ProjectPanel::BuildTreeInteractionInputEvents(
|
||||
const UIRect& bounds,
|
||||
const UIEditorHostedPanelDispatchEntry& dispatchEntry) const {
|
||||
const std::vector<UIInputEvent> rawEvents =
|
||||
BuildUIEditorPanelInputEvents(
|
||||
BuildUIEditorHostedTreeViewInputEvents(
|
||||
bounds,
|
||||
inputEvents,
|
||||
UIEditorPanelInputFilterOptions{
|
||||
.allowPointerInBounds = dispatchEntry.allowInteraction,
|
||||
.allowPointerWhileCaptured = HasActivePointerCapture(),
|
||||
.allowKeyboardInput = dispatchEntry.focused,
|
||||
.allowFocusEvents =
|
||||
dispatchEntry.focused ||
|
||||
HasActivePointerCapture() ||
|
||||
dispatchEntry.focusGained ||
|
||||
dispatchEntry.focusLost,
|
||||
.includePointerLeave =
|
||||
dispatchEntry.allowInteraction || HasActivePointerCapture()
|
||||
UIEditorHostedTreeViewInputOptions{
|
||||
.allowInteraction = dispatchEntry.allowInteraction,
|
||||
.hasInputFocus = dispatchEntry.focused,
|
||||
.captureActive = HasActivePointerCapture()
|
||||
},
|
||||
dispatchEntry.focusGained,
|
||||
dispatchEntry.focusLost);
|
||||
@@ -1093,11 +1056,12 @@ std::vector<UIInputEvent> ProjectPanel::BuildTreeInteractionInputEvents(
|
||||
m_folderExpansion,
|
||||
ResolveUIEditorTreeViewMetrics(),
|
||||
m_treeInteractionState.verticalOffset);
|
||||
return BuildUIEditorTreePanelInteractionInputEvents(
|
||||
return TreeDrag::BuildInteractionInputEvents(
|
||||
m_treeDragState,
|
||||
layout,
|
||||
GetWindowTreeItems(),
|
||||
rawEvents,
|
||||
TreeDrag::kDefaultDragThreshold,
|
||||
m_splitterDragging || m_assetDragState.dragging);
|
||||
}
|
||||
|
||||
@@ -1645,11 +1609,11 @@ void ProjectPanel::Update(
|
||||
m_treeDragState,
|
||||
m_treeFrame.layout,
|
||||
GetWindowTreeItems(),
|
||||
FilterUIEditorTreePanelPointerInputEvents(
|
||||
filteredEvents,
|
||||
m_splitterDragging || m_assetDragState.dragging),
|
||||
filteredEvents,
|
||||
m_layout.treeRect,
|
||||
treeDragCallbacks);
|
||||
treeDragCallbacks,
|
||||
TreeDrag::kDefaultDragThreshold,
|
||||
m_splitterDragging || m_assetDragState.dragging);
|
||||
if (treeDragResult.dropCommitted) {
|
||||
const bool hadAssetSelection = ResolveProjectRuntime()->HasSelection();
|
||||
CloseContextMenu();
|
||||
@@ -2206,45 +2170,29 @@ void ProjectPanel::Append(UIDrawList& drawList) const {
|
||||
treePalette,
|
||||
treeMetrics);
|
||||
|
||||
if (m_treeDragState.dragging && m_treeDragState.validDropTarget) {
|
||||
if (m_treeDragState.dropToRoot) {
|
||||
drawList.AddRectOutline(
|
||||
m_treeFrame.layout.bounds,
|
||||
kDropPreviewColor,
|
||||
1.0f,
|
||||
0.0f);
|
||||
} else {
|
||||
const std::size_t visibleIndex = FindUIEditorTreePanelVisibleItemIndex(
|
||||
m_treeFrame.layout,
|
||||
GetWindowTreeItems(),
|
||||
m_treeDragState.dropTargetItemId);
|
||||
if (visibleIndex != Widgets::UIEditorTreeViewInvalidIndex &&
|
||||
visibleIndex < m_treeFrame.layout.rowRects.size()) {
|
||||
drawList.AddRectOutline(
|
||||
m_treeFrame.layout.rowRects[visibleIndex],
|
||||
kDropPreviewColor,
|
||||
1.0f,
|
||||
0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
AppendUIEditorTreeViewDropPreview(
|
||||
drawList,
|
||||
m_treeFrame.layout,
|
||||
GetWindowTreeItems(),
|
||||
m_treeDragState.dragging && m_treeDragState.validDropTarget,
|
||||
m_treeDragState.dropToRoot,
|
||||
m_treeDragState.dropTargetItemId,
|
||||
kDropPreviewColor,
|
||||
1.0f,
|
||||
0.0f);
|
||||
|
||||
if (m_assetDragState.dragging &&
|
||||
m_assetDragState.validDropTarget &&
|
||||
m_assetDropTargetSurface == DropTargetSurface::Tree) {
|
||||
const std::size_t visibleIndex = FindUIEditorTreePanelVisibleItemIndex(
|
||||
m_treeFrame.layout,
|
||||
GetWindowTreeItems(),
|
||||
m_assetDragState.dropTargetItemId);
|
||||
if (visibleIndex != Widgets::UIEditorTreeViewInvalidIndex &&
|
||||
visibleIndex < m_treeFrame.layout.rowRects.size()) {
|
||||
drawList.AddRectOutline(
|
||||
m_treeFrame.layout.rowRects[visibleIndex],
|
||||
kDropPreviewColor,
|
||||
1.0f,
|
||||
0.0f);
|
||||
}
|
||||
}
|
||||
AppendUIEditorTreeViewDropPreview(
|
||||
drawList,
|
||||
m_treeFrame.layout,
|
||||
GetWindowTreeItems(),
|
||||
m_assetDragState.dragging &&
|
||||
m_assetDragState.validDropTarget &&
|
||||
m_assetDropTargetSurface == DropTargetSurface::Tree,
|
||||
false,
|
||||
m_assetDragState.dropTargetItemId,
|
||||
kDropPreviewColor,
|
||||
1.0f,
|
||||
0.0f);
|
||||
|
||||
drawList.PushClipRect(m_layout.browserHeaderRect);
|
||||
for (std::size_t index = 0u; index < m_layout.breadcrumbItems.size(); ++index) {
|
||||
@@ -2334,22 +2282,16 @@ void ProjectPanel::Append(UIDrawList& drawList) const {
|
||||
}
|
||||
|
||||
if (m_renameState.active) {
|
||||
const Widgets::UIEditorTextFieldPalette textFieldPalette =
|
||||
BuildUIEditorPropertyGridTextFieldPalette(
|
||||
ResolveUIEditorPropertyGridPalette(),
|
||||
ResolveUIEditorTextFieldPalette());
|
||||
const Widgets::UIEditorTextFieldMetrics textFieldMetrics =
|
||||
BuildUIEditorInlineRenameTextFieldMetrics(
|
||||
BuildRenameBounds(m_renameState.itemId, m_activeRenameSurface),
|
||||
BuildUIEditorPropertyGridTextFieldMetrics(
|
||||
ResolveUIEditorPropertyGridMetrics(),
|
||||
ResolveUIEditorTextFieldMetrics()));
|
||||
AppendUIEditorInlineRenameSession(
|
||||
drawList,
|
||||
m_renameFrame,
|
||||
m_renameState,
|
||||
textFieldPalette,
|
||||
textFieldMetrics);
|
||||
const UIRect renameBounds =
|
||||
BuildRenameBounds(m_renameState.itemId, m_activeRenameSurface);
|
||||
if (HasUIEditorTreeViewValidBounds(renameBounds)) {
|
||||
AppendUIEditorInlineRenameSession(
|
||||
drawList,
|
||||
m_renameFrame,
|
||||
m_renameState,
|
||||
ResolveUIEditorTreeViewInlineRenamePalette(),
|
||||
BuildUIEditorTreeViewInlineRenameMetrics(renameBounds));
|
||||
}
|
||||
}
|
||||
|
||||
if (assetEntries.empty()) {
|
||||
|
||||
Reference in New Issue
Block a user