new_editor: remove tree panel behavior layer

This commit is contained in:
2026-04-22 18:37:05 +08:00
parent 6d97f4fc3a
commit c1e7a0d49f
12 changed files with 567 additions and 398 deletions

View File

@@ -1,5 +1,6 @@
#pragma once
#include <XCEditor/Collections/UIEditorInlineRenameSession.h>
#include <XCEditor/Collections/UIEditorScrollView.h>
#include <XCEngine/UI/DrawData.h>
@@ -160,3 +161,54 @@ void AppendUIEditorTreeView(
const UIEditorTreeViewMetrics& metrics = {});
} // namespace XCEngine::UI::Editor::Widgets
namespace XCEngine::UI::Editor {
bool HasUIEditorTreeViewValidBounds(
const ::XCEngine::UI::UIRect& bounds);
std::size_t FindUIEditorTreeViewVisibleItemIndex(
const Widgets::UIEditorTreeViewLayout& layout,
const std::vector<Widgets::UIEditorTreeViewItem>& items,
std::string_view itemId);
::XCEngine::UI::UIRect BuildUIEditorTreeViewInlineRenameBounds(
const Widgets::UIEditorTreeViewLayout& layout,
const std::vector<Widgets::UIEditorTreeViewItem>& items,
std::string_view itemId,
const Widgets::UIEditorTextFieldMetrics& hostedMetrics,
float minWidth = 120.0f,
float trailingPadding = 8.0f);
Widgets::UIEditorTextFieldMetrics ResolveUIEditorTreeViewHostedTextFieldMetrics();
Widgets::UIEditorTextFieldMetrics BuildUIEditorTreeViewInlineRenameMetrics(
const ::XCEngine::UI::UIRect& bounds);
Widgets::UIEditorTextFieldPalette ResolveUIEditorTreeViewInlineRenamePalette();
bool TryStartUIEditorTreeViewInlineRenameSession(
UIEditorInlineRenameSessionState& renameState,
UIEditorInlineRenameSessionFrame& renameFrame,
std::string_view itemId,
std::string initialText,
const ::XCEngine::UI::UIRect& bounds);
void UpdateUIEditorTreeViewInlineRenameSession(
UIEditorInlineRenameSessionState& renameState,
UIEditorInlineRenameSessionFrame& renameFrame,
const ::XCEngine::UI::UIRect& bounds,
const std::vector<::XCEngine::UI::UIInputEvent>& inputEvents);
void AppendUIEditorTreeViewDropPreview(
::XCEngine::UI::UIDrawList& drawList,
const Widgets::UIEditorTreeViewLayout& layout,
const std::vector<Widgets::UIEditorTreeViewItem>& items,
bool active,
bool dropToRoot,
std::string_view dropTargetItemId,
const ::XCEngine::UI::UIColor& previewColor,
float borderThickness = 1.0f,
float cornerRounding = 0.0f);
} // namespace XCEngine::UI::Editor