new_editor: unify shared UI text measurement semantics

This commit is contained in:
2026-04-22 01:50:00 +08:00
parent 26e75e093e
commit 0ec0eff90c
16 changed files with 284 additions and 86 deletions

View File

@@ -147,7 +147,8 @@ UIEditorWorkspaceComposeRequest ResolveUIEditorWorkspaceComposeRequest(
const Widgets::UIEditorDockHostLayout& dockHostLayout,
const UIEditorPanelRegistry& panelRegistry,
const std::vector<UIEditorWorkspacePanelPresentationModel>& presentations,
const Widgets::UIEditorViewportSlotMetrics& viewportMetrics) {
const Widgets::UIEditorViewportSlotMetrics& viewportMetrics,
const UIEditorTextMeasurer* textMeasurer) {
UIEditorWorkspaceComposeRequest request = {};
request.dockHostLayout = dockHostLayout;
request.contentHostRequest = ResolveUIEditorPanelContentHostRequest(
@@ -171,9 +172,13 @@ UIEditorWorkspaceComposeRequest ResolveUIEditorWorkspaceComposeRequest(
UIEditorWorkspaceViewportComposeRequest viewportRequest = {};
viewportRequest.panelId = mountRequest.panelId;
viewportRequest.bounds = mountRequest.bounds;
viewportRequest.viewportShellModel = ResolveUIEditorViewportShellMeasuredModel(
presentation->viewportShellModel,
viewportMetrics,
textMeasurer);
viewportRequest.viewportShellRequest = ResolveUIEditorViewportShellRequest(
mountRequest.bounds,
presentation->viewportShellModel.spec,
viewportRequest.viewportShellModel.spec,
viewportMetrics);
request.viewportRequests.push_back(std::move(viewportRequest));
}
@@ -203,7 +208,8 @@ UIEditorWorkspaceComposeRequest ResolveUIEditorWorkspaceComposeRequest(
dockHostLayout,
panelRegistry,
presentations,
viewportMetrics);
viewportMetrics,
textMeasurer);
}
UIEditorWorkspaceComposeFrame UpdateUIEditorWorkspaceCompose(
@@ -240,7 +246,7 @@ UIEditorWorkspaceComposeFrame UpdateUIEditorWorkspaceCompose(
UIEditorWorkspaceViewportComposeFrame viewportFrame = {};
viewportFrame.panelId = presentation.panelId;
viewportFrame.bounds = viewportRequest->bounds;
viewportFrame.viewportShellModel = presentation.viewportShellModel;
viewportFrame.viewportShellModel = viewportRequest->viewportShellModel;
UIEditorViewportInputBridgeRequest inputRequest = {};
if (inputOwner != nullptr) {
inputRequest.focusMode = UIEditorViewportInputBridgeFocusMode::External;
@@ -250,7 +256,7 @@ UIEditorWorkspaceComposeFrame UpdateUIEditorWorkspaceCompose(
viewportFrame.viewportShellFrame = UpdateUIEditorViewportShell(
panelState.viewportShellState,
viewportRequest->viewportShellRequest,
presentation.viewportShellModel,
viewportFrame.viewportShellModel,
inputEvents,
inputRequest);
frame.viewportFrames.push_back(std::move(viewportFrame));