When property view widgets get reused, we are running (generate nodes) repeatedly while scrolling. Through some trial and error, I've identified that since I am only showing a fraction of the nodes I don't need to have all the nodes built; I can get away with generating the ones I will see, which improves performance from around 130 ms to 10-20ms per widget. I am adding a way to specify the properties you want to build and ignore the rest, which ultimately dramatically speeds up the PropertyView widget for the case where you are only showing a few properties from the object.
[REVIEW] [at]jay.Nakai, [at]sebastian.nordgren, [at]david.hamm
#rb sebastian.nordgren
#ROBOMERGE-OWNER: vlad.golovan
#ROBOMERGE-AUTHOR: vlad.golovan
#ROBOMERGE-SOURCE: CL 19036849 via CL 19036854 via CL 19038143 via CL 19038155 via CL 19039279
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v918-19018356)
[CL 19039995 by vlad golovan in ue5-main branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
Also added code for favoriting groups, but this currently isn't enabled work since header widgets suffer from the same problem as custom widget rows do - their SWidget is created in place rather than through a function call, so thus cannot be duplicated. This needs some more thought, but the code for storing them is the same either way.
#jira UE-109586
#rb lauren.barnes
[CL 15802120 by sebastian nordgren in ue5-main branch]
The details view now displays gridlines between rows, and now has 4 columns - edit condition, name, value, and reset/extensions.
Edit condition widgets are now created in SDetailSingleItemRow and are placed in their own fixed column on the left of the details view. FEditConditionParser is now in FPropertyNode rather FPropertyEditor, which allows access to it more broadly - notably in SDetailSingleItemRow.
The Reset to Default SWidget can no longer be replaced - the logic for it being visible and a handler for when it is pressed is still customizable. SPropertyEditorAsset no longer has a special slot for the reset to default widget.
All extension widgets are now placed in a resizable column on the right of the panel, including the Keyframe button.
FDetailColumnSizeData is now publicly exposed by IDetailsView, and is no longer passed around as much.
#rb matt.kuhlenschmidt
[CL 14375859 by sebastian nordgren in ue5-main branch]
#rb none
#ROBOMERGE-OWNER: matt.kuhlenschmidt
#ROBOMERGE-AUTHOR: matt.kuhlenschmidt
#ROBOMERGE-SOURCE: CL 11382968 via CL 11382988 via CL 11382990
#ROBOMERGE-BOT: (v654-11333218)
[CL 11383722 by matt kuhlenschmidt in Main branch]
Changed the way details panels handle multiple root objects. The filter can now specify this without setting a specific flag on a details panel at creation time.
[CODEREVIEW] chris.gagnon
#ROBOMERGE-OWNER: matt.kuhlenschmidt
#ROBOMERGE-AUTHOR: matt.kuhlenschmidt
#ROBOMERGE-SOURCE: CL 11308033 via CL 11308037 via CL 11308040
#ROBOMERGE-BOT: (v653-11302973)
#rb none
[CL 11310703 by matt kuhlenschmidt in Main branch]
#rnx
#rb none
#ROBOMERGE-SOURCE: CL 10869241 via CL 10869527 via CL 10869904
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870586 by ryan durand in Main branch]
#rb sebastian.nordgren
#jira UE-79529
#lockdown cristina.riveron
#ROBOMERGE-SOURCE: CL 8572562 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v407-8568993)
[CL 8572563 by patrick boutot in Main branch]