Implement multi-window detached tab host flow

This commit is contained in:
2026-04-14 16:19:23 +08:00
parent 4b58df9a61
commit 307259091e
12 changed files with 1210 additions and 96 deletions

View File

@@ -53,16 +53,16 @@ constexpr float kHeaderFontSize = 12.0f;
constexpr float kTileLabelFontSize = 11.0f;
constexpr UIColor kSurfaceColor(0.10f, 0.10f, 0.10f, 1.0f);
constexpr UIColor kPaneColor(0.11f, 0.11f, 0.11f, 1.0f);
constexpr UIColor kHeaderColor(0.12f, 0.12f, 0.12f, 1.0f);
constexpr UIColor kTextPrimary(0.840f, 0.840f, 0.840f, 1.0f);
constexpr UIColor kPaneColor(0.10f, 0.10f, 0.10f, 1.0f);
constexpr UIColor kHeaderColor(0.11f, 0.11f, 0.11f, 1.0f);
constexpr UIColor kTextPrimary(0.880f, 0.880f, 0.880f, 1.0f);
constexpr UIColor kTextStrong(0.930f, 0.930f, 0.930f, 1.0f);
constexpr UIColor kTextMuted(0.580f, 0.580f, 0.580f, 1.0f);
constexpr UIColor kTextMuted(0.640f, 0.640f, 0.640f, 1.0f);
constexpr UIColor kTileHoverColor(0.14f, 0.14f, 0.14f, 1.0f);
constexpr UIColor kTileSelectedColor(0.17f, 0.17f, 0.17f, 1.0f);
constexpr UIColor kTilePreviewFillColor(0.20f, 0.20f, 0.20f, 1.0f);
constexpr UIColor kTilePreviewShadeColor(0.15f, 0.15f, 0.15f, 1.0f);
constexpr UIColor kTilePreviewOutlineColor(0.920f, 0.920f, 0.920f, 0.25f);
constexpr UIColor kTileSelectedColor(0.18f, 0.18f, 0.18f, 1.0f);
constexpr UIColor kTilePreviewFillColor(0.15f, 0.15f, 0.15f, 1.0f);
constexpr UIColor kTilePreviewShadeColor(0.12f, 0.12f, 0.12f, 1.0f);
constexpr UIColor kTilePreviewOutlineColor(0.920f, 0.920f, 0.920f, 0.20f);
bool ContainsPoint(const UIRect& rect, const UIPoint& point) {
return point.x >= rect.x &&
@@ -237,6 +237,22 @@ void ProductProjectPanel::SetTextMeasurer(const UIEditorTextMeasurer* textMeasur
m_textMeasurer = textMeasurer;
}
void ProductProjectPanel::ResetInteractionState() {
m_treeInteractionState = {};
m_treeFrame = {};
m_frameEvents.clear();
m_layout = {};
m_hoveredAssetItemId.clear();
m_lastPrimaryClickedAssetId.clear();
m_hoveredBreadcrumbIndex = kInvalidLayoutIndex;
m_pressedBreadcrumbIndex = kInvalidLayoutIndex;
m_visible = false;
m_splitterHovered = false;
m_splitterDragging = false;
m_requestPointerCapture = false;
m_requestPointerRelease = false;
}
ProductProjectPanel::CursorKind ProductProjectPanel::GetCursorKind() const {
return (m_splitterHovered || m_splitterDragging) ? CursorKind::ResizeEW : CursorKind::Arrow;
}