Description

FPropertyEditorInlineClassFilter IsUnloadedClassAllowed and IsClassAllowed use the confusing IsA semantics. In the IsUnloadedClassAllowed, the usage seems wrong completely.

It seems like the real intention is to verify that the passed in class is derived from the appropriate type AND the chain of owning objects must satisfy an IsA relationship with the "ClassWithin" member of the passed in class (i.e. the class is correct, and can be contained within the given classes).

This doesn't work at all for the UnloadedCase, as the check used (FClassViewerFilterFuncs::IfMatchesAll_ObjectsSetIsAClass) only checks against UBlueprintGeneratedClass (which means any native class will fail).

Steps to Reproduce
  1. Compile and open the attached project.
  2. Open the TestMap map.
  3. Select the TestActor actor in the World Outliner.
  4. Select the TestActorComp component in the details panel.
  5. Expand the TIObject drop down, and observe the classes.
  6. Open the TestInstancedObjectBP blueprint.
  7. Repeat steps 3 - 5.

Expected: Both times TIObject is expanded, TestInstancedObjectBP should be in the class list.

Actual: TestInstancedObjectBP is not in the class list until the associated blueprint has been loaded.

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentTools
Affects Versions4.124.134.144.15
Target Fix4.16
Fix Commit3357494
Main Commit3362661
CreatedMar 20, 2017
ResolvedMar 21, 2017
UpdatedFeb 4, 2019