Description

Widget components set to "draw at desired size" won't draw any smaller than 100x100. This looks to be related to the hard-coded desired size of the SPopupLayer (callstack attached). This problem didn't occur in 4.27, so it may be related to changes made to widget invalidation. 

Steps to Reproduce
  1. Create a widget that is smaller than 100x100 (a text block with the word "Text" wrapped in a border works well)
  2. Create an actor with a widget component, and assign your widget to it
  3. Check the "Draw at Desired Size" option
  4. Note that the widget is drawing larger than the desired size of the text (as made obvious by the border)
Callstack

 

UnrealEditor-SlateCore.dll!SPopupLayer::ComputeDesiredSize(float __formal) Line 173 C++
UnrealEditor-SlateCore.dll!SPopupLayer::ComputeDesiredSize(float __formal) Line 173 C++
UnrealEditor-SlateCore.dll!SWidget::CacheDesiredSize(float InLayoutScaleMultiplier) Line 939 C++
UnrealEditor-SlateCore.dll!SWidget::Prepass_Internal(float InLayoutScaleMultiplier) Line 1717 C++
[Inline Frame] UnrealEditor-SlateCore.dll!SWidget::Prepass_ChildLoop::__l2::<lambda_d86c91bdd85b28153102e6b3d212d742>::operator()(SWidget &) Line 1755 C++
[Inline Frame] UnrealEditor-SlateCore.dll!FChildren::ForEachWidget(SWidget::Prepass_ChildLoop::__l2::<lambda_d86c91bdd85b28153102e6b3d212d742>) Line 68 C++
UnrealEditor-SlateCore.dll!SWidget::Prepass_ChildLoop(float InLayoutScaleMultiplier, FChildren * MyChildren) Line 1770 C++
UnrealEditor-SlateCore.dll!SWidget::Prepass_Internal(float InLayoutScaleMultiplier) Line 1711 C++
[Inline Frame] UnrealEditor-SlateCore.dll!SWidget::Prepass_ChildLoop::__l2::<lambda_d86c91bdd85b28153102e6b3d212d742>::operator()(SWidget &) Line 1755 C++
[Inline Frame] UnrealEditor-SlateCore.dll!FChildren::ForEachWidget(SWidget::Prepass_ChildLoop::__l2::<lambda_d86c91bdd85b28153102e6b3d212d742>) Line 68 C++
UnrealEditor-SlateCore.dll!SWidget::Prepass_ChildLoop(float InLayoutScaleMultiplier, FChildren * MyChildren) Line 1770 C++
UnrealEditor-SlateCore.dll!SWidget::Prepass_Internal(float InLayoutScaleMultiplier) Line 1711 C++
UnrealEditor-SlateCore.dll!SWidget::SlatePrepass(float InLayoutScaleMultiplier) Line 692 C++
UnrealEditor-UMG.dll!UWidgetComponent::DrawWidgetToRenderTarget(float DeltaTime) Line 1330 C++
UnrealEditor-UMG.dll!UWidgetComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction * ThisTickFunction) Line 1207 C++
[Inline Frame] UnrealEditor-Engine.dll!FActorComponentTickFunction::ExecuteTick::__l2::<lambda_8e93cba63652895611dfa1bc126611cb>::operator()(float) Line 1089 C++
UnrealEditor-Engine.dll!FActorComponentTickFunction::ExecuteTickHelper<<lambda_8e93cba63652895611dfa1bc126611cb>>(UActorComponent * Target, bool bTickInEditor, float DeltaTime, ELevelTick TickType, const FActorComponentTickFunction::ExecuteTick::__l2::<lambda_8e93cba63652895611dfa1bc126611cb> & ExecuteTickFunc) Line 4069 C++
UnrealEditor-Engine.dll!FActorComponentTickFunction::ExecuteTick(float DeltaTime, ELevelTick TickType, ENamedThreads::Type CurrentThread, const TRefCountPtr<FGraphEvent> & MyCompletionGraphEvent) Line 1087 C++
UnrealEditor-Engine.dll!FTickFunctionTask::DoTask(ENamedThreads::Type CurrentThread, const TRefCountPtr<FGraphEvent> & MyCompletionGraphEvent) Line 284 C++
UnrealEditor-Engine.dll!TGraphTask<FTickFunctionTask>::ExecuteTask(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & NewTasks, ENamedThreads::Type CurrentThread, bool bDeleteOnCompletion) Line 975 C++
[Inline Frame] UnrealEditor-Core.dll!FBaseGraphTask::Execute(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & CurrentThread, ENamedThreads::Type) Line 587 C++
UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksNamedThread(int QueueIndex, bool bAllowStall) Line 761 C++
UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksUntilIdle(int QueueIndex) Line 661 C++
UnrealEditor-Core.dll!FTaskGraphCompatibilityImplementation::ProcessThreadUntilIdle(ENamedThreads::Type CurrentThread) Line 2114 C++UnrealEditor-Engine.dll!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup WorldTickGroup, bool bBlockTillComplete) Line 582 C++
UnrealEditor-Engine.dll!FTickTaskManager::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 1592 C++
UnrealEditor-Engine.dll!UWorld::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 790 C++
UnrealEditor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1542 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1566 C++
UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 487 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5254 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 62 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 186 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 272 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 330 C++[External Code] 

 

Have Comments or More Details?

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

4
Login to Vote

Backlogged
ComponentUE - Editor - UI Systems - UMG
Affects Versions5.0
CreatedApr 19, 2022
UpdatedDec 15, 2023