Description

When global invalidation is enabled, Scale Boxes don't react properly to changes in the size of their contents. Licensees have worked around this by updating SScaleBox::OnArrangeChildren:

// This scale may not look right, the item being 
// shown may need 2 frames to truly be drawn correctly,
// but rather than have a blank frame, it's better for us to try
// and fit the contents to our known geometry.
const float TempComputedContentScale = ComputedContentScale.IsSet() ? ComputedContentScale.GetValue() : ComputeContentScale(AllottedGeometry);

The workaround here is to compute the content scale again regardless of if it's already been set:

const float TempComputedContentScale = ComputeContentScale(AllottedGeometry);  

While this solves the issue, it may introduce performance regressions in cases where global invalidation isn't enabled since we're always recomputing the scale.

Steps to Reproduce
  1. Create a widget with a scale box and some child widget that can change size
  2. Enable global invalidation and launch PIE in a new editor window. Note that the scale box scales it's child as expected
  3. Change the size of the child widget, and note that the scalebox does not recalculate

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-219598 in the post.

0
Login to Vote

Backlogged
ComponentUE - Editor - UI Systems - Slate
Affects Versions5.45.5
CreatedJul 17, 2024
UpdatedOct 1, 2024
View Jira Issue