Commit Graph

90 Commits

Author SHA1 Message Date
AdricEpic
5a64c73627 Sequencer: Fix issue caused by my earlier change 36002464 where payload properties on director blueprint conditions would appear twice in the details panel. What was happening was:
1) There is a director blueprint condition property that is part of a condition container struct. The condition container is added as an external structure. Its director blueprint condition property has a customization that adds its payload variable properties.
2) The code in DetailLayoutBuilderImpl copies the properties from the external structure to the parent category. This includes both a) the director blueprint condition property, and b) the payload variables.
3) The newly added director blueprint condition property from #2 that got put in the parent category has its customization run again, and that customization again adds payload variables, meaning we have 2 copies of the payload variables added.

To fix this, in step 2, I check to see if the child nodes have an external root property node. If they do, I do not copy them to the parent category.

[REVIEW] [at]ue-sequencer, [at]juan.portillo
#jira UE-225007
#rb Juan.Portillo

[CL 36750381 by AdricEpic in 5.5 branch]
2024-10-01 18:13:33 -04:00
david bromberg
09bb64d0d6 Slate- When using IDetailCategoryBuilder::AddExternalObjects, if sub-categories are disabled (via CollapseCategories meta for example), and if no property row is specifically added for a property, but instead a property customization for that property adds custom rows instead, then these rows do not show up.
This is because when subcategories aren't supported, the code in FDetailLayoutBuilderImpl::GenerateDetailLayout() generates a detail layout and manually tries to copy the property nodes from generated child nodes to the parent category. However, custom rows will not have property nodes, and in this case the parent property that has been customized may not itself add a detail node.

The solution I have here which I'd like reviewed is in the case no PropertyNode is found for a child node, to look to the parent node and if the parent node has a valid property node, then add that instead to the parent category. This will force the same customization to run for the parent category. I considered trying to copy over the widgets from the custom property rows added, but this resulted in disconnected widgets.

I'm pretty sure the case I'm trying to solve for here is rare, and so far I haven't encountered any other property panes that even fall inside the if (!PropertyNode.IsValid()) case, but if there are ways to make this more robust, or if I need to take a different approach, please let me know.

Relevant slack thread: https://epicgames.slack.com/archives/C045H4DFN5P/p1724841764932099

[REVIEW] [at]editor-ui-systems

#rb Juan.Portillo, logan.buchy

[CL 36002471 by david bromberg in ue5-main branch]
2024-09-04 05:43:09 -04:00
charles lefebvre
acdd976f5e Fix categories not working with Verse Devices
#rnx
#rb Tom.Noonan

[CL 35741376 by charles lefebvre in ue5-main branch]
2024-08-22 11:11:18 -04:00
jonathan bard
1085f0b94a Fixed mistake spotted by static analysis
[CL 35366718 by jonathan bard in ue5-main branch]
2024-08-07 09:26:33 -04:00
jonathan bard
faf71fd450 Fixed LandscapeInherited properties (from a custom category, like Nanite) that failed to be made disabled and to have their tooltip customized to indicate they are inherited : FDetailLayoutBuilderImpl::EditDefaultProperty only returns a valid IDetailPropertyRow for a property registered in a default category. It now looks into the custom and sub-category map if it cannot find the property in the other ones.
#jira UE-202147
#rb logan.buchy
#tests UE, UEFN

[CL 35365606 by jonathan bard in ue5-main branch]
2024-08-07 08:15:33 -04:00
logan buchy
9aa9d3eb7a Add new function for for DetailLayoutBuilder::EditCategory that does not hide category-less properties
* It wasn't possible to get at the IPropertyHandles for category-less properties since passing a "None" FName would default the category to "General".  However, it is possible to construct struct/class metadata that has properties with no category.
* Allows detail panel customizations to be written that affect all properties.

#rb jordan.hoffmann
#jira UE-204966

[CL 31773963 by logan buchy in ue5-main branch]
2024-02-23 15:12:31 -05:00
mike zyracki
9c8acb1685 Property Editor: Add getting the expansion state for a detail property row, which is needed in the following jira so we can show/hide widgets based upon expansion state. Also need to get the property row from the root nodes so added function to detail layout to do that.
#jira UE-200125
#rb Max.Chen

[CL 30958370 by mike zyracki in ue5-main branch]
2024-01-27 23:01:11 -05:00
charles lefebvre
e6d1258b95 Fix external objects collapsing on edit
#rb karen.jirak
#tests Tested in PIE
[FYI] jamie.dale

[CL 29847387 by charles lefebvre in ue5-main branch]
2023-11-20 14:22:17 -05:00
mikko mononen
92d56d6dc6 - Added IDetailLayoutBuilder::DoesCategoryHaveGeneratedChildren() to allow to check if a category has any generated rows
- Added option to IDetailCategoryBuilder::HeaderContent() to let the content span the whole row (hides category label)

#rb karen.jirak

[CL 29125964 by mikko mononen in ue5-main branch]
2023-10-26 04:03:14 -04:00
karen jirak
2af50cba18 The editor crashes once the user opens the "Editor preferences" window on Linux OS.
The code in DetailLayoutBuilderImpl.cpp that is attempting to create a new category is relying on a value from a FProperty that is not necessarily initialized and should not be relied upon. Instead, use information from the UObject to initialize the Category and it's UProperty

#jira UE-196166
#rb JeanMichel.Dignard

[CL 28259427 by karen jirak in ue5-main branch]
2023-09-26 21:31:35 -04:00
karen jirak
0aef208815 Support showing components with no UProperties and add a disallowed types list.
~added isEmpty property to details categories for showing stub categories
~styling support to show them properly

#jira UE-195683
#rb ronald.koppers

[CL 28073151 by karen jirak in ue5-main branch]
2023-09-20 22:48:08 -04:00
mikko mononen
85634ec1c3 Prevent accessing of invalid property nodes after undo and redo.
There's a window after undo (between undo and next property view tick) where property nodes point to the previous data.
If e.g. a property customization needs to refresh cached data after undo, they will try to access the data via old pointers.
Similar issue happens when removing item from array, the tick of IDetailCustomNodeBuilder gets called before we have updates the property nodes.

All these issues happen because when we update the child nodes, there are some parts of code that still hold hard refereces to them, and they are not
actually cleared on FPropertyNode::DestroyTree(). That in turn will cause IPropertyHandle to be in valid state, but pointing to data that has been freed.

- Added bIsDestroyed on property nodes to be able distinguish property nodes which are still alive but destoyed
- Prevent calling Tick() on property tree nodes, whose property node is destroyed
- Changed Gameplay Tag, Tag Container and Query to poll for changes, because undo callbacks are triggered at times when the property handle (and underlying node) is pointing to old data
- The above gameplay tag & co change will also react to property changes from outside the details panel

#jira UE-188117 UE-190882

[CL 27705747 by mikko mononen in ue5-main branch]
2023-09-08 04:42:59 -04:00
Juan Portillo
b23c19b932 Property Editor:
- Fix properties under sub-categories not appearing at all when using Struct on Scope in Property Row Generator

#jira UE-182375
#rb karen.jirak

[CL 25953385 by Juan Portillo in ue5-main branch]
2023-06-13 11:39:25 -04:00
marc audy
20303348c4 Remove (the never should have been exposed) direct access to the private PropertyNode via the PropertyHandle
[CL 25458606 by marc audy in ue5-main branch]
2023-05-12 16:01:47 -04:00
Michael Galetzka
0947e3f4d0 Fixed a bug where the details view would not properly show rows with changed visibility after a tree refresh
#jira none
#rb karen.jirak
#preflight 6446934027014596f3709a8f

[CL 25230338 by Michael Galetzka in ue5-main branch]
2023-04-28 07:02:52 -04:00
mikko mononen
03afbfd05a Improved standalone structure property node handling
- Added IStructureProvider which allows to edit multiple instances of structs at a time
- Improved default value handling in standalone structure nodes
- Fixed bug where expanded nodes did not retain their expansion state when structure nodes were rebuild (e.g. when editing a component)
- Removed caching from Instanced struct customization

#jira UE-172047
#rb Jamie.Dale, Adrien.Logut
#preflight 644a48360f12404fb77173f6

[CL 25214019 by mikko mononen in ue5-main branch]
2023-04-27 10:06:33 -04:00
vlad golovan
a0eec28409 Fix an issue where prior valid to generate properties were not generated if we only specified full path to the property
[REVIEW] [at]sebastian.nordgren
#rb sebastian.nordgren

[CL 22787097 by vlad golovan in ue5-main branch]
2022-10-26 15:32:05 -04:00
sebastian nordgren
dfded23a07 IDetailLayoutBuilder no longer returns a const TSharedRef, unlike all other calls in the API.
#rb paul.chipchase
#preflight 62bd724ced35ee71a7fd15bd

[CL 20890559 by sebastian nordgren in ue5-main branch]
2022-06-30 06:06:31 -04:00
Matt Kuhlenschmidt
d47c5bd6dc Ensure uobjects added through external object customizations are not considered top level objects in a multi-top-level object details panel
#preflight none

[CL 19555660 by Matt Kuhlenschmidt in ue5-main branch]
2022-03-30 08:42:24 -04:00
vlad golovan
485406734e Engine change to allow only building the property nodes that user is going to see.
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]
2022-02-17 14:54:44 -05:00
aurel cordonnier
fc542f6cfd Merge from Release-Engine-Staging @ 18081189 to Release-Engine-Test
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971

[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
2021-11-07 23:43:01 -05:00
denys dubinin
2acfc93f9b Fix return IPropertyHandle in IDetailLayoutBuilder::AddCustomRowToCategory
#rb Matt.Kuhlenschmidt

#ROBOMERGE-AUTHOR: denys.dubinin
#ROBOMERGE-SOURCE: CL 17705280 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v878-17703426)

[CL 17705296 by denys dubinin in ue5-release-engine-test branch]
2021-10-04 05:12:26 -04:00
sebastian nordgren
b35fb7c36d Subcategory nodes are no longer always visible in editor utility widgets with categories filtered out.
#rb paul.chipchase

#ROBOMERGE-SOURCE: CL 16275950 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v799-16237190)

[CL 16275968 by sebastian nordgren in ue5-release-engine-test branch]
2021-05-11 13:53:51 -04:00
sebastian nordgren
1324d9dd3d Subcategory nodes are no longer always visible in editor utility widgets with categories filtered out.
#rb paul.chipchase

[CL 16275950 by sebastian nordgren in ue5-main branch]
2021-05-11 13:53:32 -04:00
Marc Audy
f02d489290 Update Release-Engine-Test from Release-Engine-Staging @ 16264272
[CL 16264458 by Marc Audy in ue5-release-engine-test branch]
2021-05-11 01:10:20 -04:00