[UE5.1, Bug Report] Widget's IsVisible is funny.

afbeelding

afbeelding

I don’t think this needs explanation. If it does: inconsistent results in the different methods you can call to check if a widget is visible or not. Some of these are overcomplicated and check for one or two conditions.

If we look at the absolute simplest one, even that is broken:

// UWidget* ThatWidget ....;
// If SafeWidget is not valid:
bool bIsVisible = ThatWidget->IsVisible(); // == false, does not respect Visibility property.
bool bIsVisible = ThatWidget->GetVisibility == ESlateVisibility::Visible; // == true.

// ? Now what is with the dupe enumerator used in slate?
// SafeWidget->GetVisibility().IsVisible()

// If you do something in the engine, do it right or don't do it!