• LongCatIsLooong's avatar
    Use a separate `TextPainter` for intrinsics calculation in `RenderEditable`... · cc017017
    LongCatIsLooong authored
    Use a separate `TextPainter` for intrinsics calculation in `RenderEditable` and `RenderParagraph` (#144577)
    
    Use a dedicated `TextPainter` for intrinsic size calculation in `RenderEditable` and `RenderParagraph`.
    
    This is an implementation detail so the change should be covered by existing tests.  Performance wise this shouldn't be significantly slower since SkParagraph [caches the result of slower operations across different paragraphs](https://github.com/google/skia/blob/9c62e7b382cf387195ef82895530c97ccceda690/modules/skparagraph/src/ParagraphCache.cpp#L254-L272). Existing benchmarks should be able to catch potential regressions (??).
    
    The reason for making this change is to make sure that intrinsic size computations don't destroy text layout artifacts, so I can expose the text layout as a stream of immutable `TextLayout` objects, to signify other render objects that text-layout-dependent-cache (such as caches for `getBoxesForRange` which can be relatively slow to compute) should be invalidated and  `markNeedsPaint` needs to be called if the painting logic depended on text layout.
    Without this change, the intrinsics/dry layout calculations will add additional events to the text layout stream, which violates the "dry"/non-destructive contract.
    cc017017
Name
Last commit
Last update
..
annotated_region_test.dart Loading commit data...
aspect_ratio_test.dart Loading commit data...
baseline_test.dart Loading commit data...
binding_pipeline_manifold_init_test.dart Loading commit data...
binding_pipeline_manifold_test.dart Loading commit data...
binding_test.dart Loading commit data...
box_constraints_test.dart Loading commit data...
box_test.dart Loading commit data...
cached_intrinsics_test.dart Loading commit data...
constraints_test.dart Loading commit data...
debug_overflow_indicator_test.dart Loading commit data...
debug_test.dart Loading commit data...
dynamic_intrinsics_test.dart Loading commit data...
editable_gesture_test.dart Loading commit data...
editable_intrinsics_test.dart Loading commit data...
editable_test.dart Loading commit data...
error_test.dart Loading commit data...
first_frame_test.dart Loading commit data...
flex_overflow_test.dart Loading commit data...
flex_test.dart Loading commit data...
image_test.dart Loading commit data...
independent_layout_test.dart Loading commit data...
intrinsic_width_test.dart Loading commit data...
layer_annotations_test.dart Loading commit data...
layers_test.dart Loading commit data...
limited_box_test.dart Loading commit data...
localized_fonts_test.dart Loading commit data...
memory_allocations_test.dart Loading commit data...
mouse_tracker_cursor_test.dart Loading commit data...
mouse_tracker_test.dart Loading commit data...
mouse_tracker_test_utils.dart Loading commit data...
multi_view_binding_test.dart Loading commit data...
mutations_test.dart Loading commit data...
non_normalized_constraints_test.dart Loading commit data...
object_paint_dispose_test.dart Loading commit data...
object_test.dart Loading commit data...
offstage_test.dart Loading commit data...
overflow_test.dart Loading commit data...
paint_error_test.dart Loading commit data...
painting_context_test.dart Loading commit data...
paragraph_intrinsics_test.dart Loading commit data...
paragraph_test.dart Loading commit data...
pipeline_owner_tree_test.dart Loading commit data...
platform_view_test.dart Loading commit data...
positioned_box_test.dart Loading commit data...
proxy_box_test.dart Loading commit data...
proxy_getters_and_setters_test.dart Loading commit data...
proxy_sliver_test.dart Loading commit data...
reattach_test.dart Loading commit data...
relative_rect_test.dart Loading commit data...
relayout_boundary_test.dart Loading commit data...
rendering_tester.dart Loading commit data...
repaint_boundary_2_test.dart Loading commit data...
repaint_boundary_test.dart Loading commit data...
selection_test.dart Loading commit data...
semantics_and_children_test.dart Loading commit data...
simple_semantics_test.dart Loading commit data...
size_test.dart Loading commit data...
sliver_cache_test.dart Loading commit data...
sliver_fixed_extent_layout_test.dart Loading commit data...
sliver_persistent_header_test.dart Loading commit data...
sliver_utils.dart Loading commit data...
slivers_block_test.dart Loading commit data...
slivers_helpers_test.dart Loading commit data...
slivers_layout_test.dart Loading commit data...
slivers_test.dart Loading commit data...
stack_test.dart Loading commit data...
table_border_test.dart Loading commit data...
table_test.dart Loading commit data...
transform_test.dart Loading commit data...
view_chrome_style_test.dart Loading commit data...
view_constraints_test.dart Loading commit data...
view_test.dart Loading commit data...
viewport_caching_test.dart Loading commit data...
viewport_test.dart Loading commit data...
wrap_test.dart Loading commit data...