[UE 5.8][UMG] ProgressBar Box brush margin changes are not reflected in Widget Designer until editor restart

Summary

Editing nested FSlateBrush properties in a UProgressBar Widget Style can leave the Widget Blueprint Designer preview using stale geometry. The asset saves Draw As = Box and the intended Margin correctly, but the preview may continue rendering the brush as stretched instead of nine-sliced. Restarting the editor rebuilds the preview and immediately produces the correct capsule shape.

What Type of Bug are you experiencing?

UI / Tools

Steps to Reproduce

  1. In Unreal Engine 5.8, create or open a Widget Blueprint.
  2. Add two ProgressBar widgets.
  3. Assign the same UI material instance to both ProgressBar Fill Image brushes. A circular or rounded opaque image makes the difference easy to see.
  4. Set each Fill Image brush to Draw As = Box.
  5. Edit the nested Fill Image Margin, for example horizontal edges = 0.5 or all edges = 0.5 for a capsule.
  6. Compile and save the Widget Blueprint while keeping the Designer open.
  7. Observe that one preview can retain the previous stretched or non-nine-sliced appearance even though the Details panel and saved asset contain the new Box and Margin values.
  8. Restart Unreal Editor and reopen the same Widget Blueprint. The same saved values now render correctly.

Expected Result

The Widget Blueprint Designer should immediately render the current FSlateBrush Draw As and Margin values after they are edited, compiled, or saved. Two ProgressBars using the same material and equivalent Box brush settings should use the same nine-slice geometry without restarting the editor.

Observed Result

The Details panel and serialized asset contain the intended Draw As = Box and Margin values, but one ProgressBar preview can continue using stale stretched geometry. A full editor restart reconstructs the preview and the exact same saved asset then renders correctly as a rounded capsule.

Affects Versions

5.8

Platform(s)

Windows

Additional Notes

Verified on Unreal Engine 5.8.0-55116800+++UE5+Release-5.8 on Windows, using an unmodified installed engine build. No project-specific asset names or paths are required for the behavior.

After restarting, live inspection shows both the saved widget template and transient Designer preview instance holding Draw As = Box and the expected Margin, and the brush renders correctly. This rules out a failed asset save and points to stale Designer state before restart.

Suspected engine path:

  • UProgressBar::SynchronizeProperties() passes WidgetStyle to SProgressBar::SetStyle().
  • UWidget::PostEditChangeProperty() only synchronizes when a cached Slate widget is valid.
  • SWidgetDetailsView::NotifyPostChange() forces a preview rebuild for properties marked DesignerRebuild. UProgressBar::WidgetStyle is not marked DesignerRebuild, so nested FProgressBarStyle/FSlateBrush edits may not rebuild the affected preview instance.
  • Slate’s Box rendering consumes FSlateBrush::Margin during paint, so this does not appear to be a material resource cache issue.

A targeted Designer preview rebuild/invalidation when UProgressBar::WidgetStyle changes may resolve the issue.