Commit Graph

141 Commits

Author SHA1 Message Date
karen jirak
48983a4d7d Details Panel - Component card layout actions
~ finish up clean up and refactor of details view style. Make sure that all of the numbers are moved to the style file and anything state related stays in the display manager.

#jira UE-194125
#rb brooke.hubert

[CL 27899004 by karen jirak in ue5-main branch]
2023-09-14 18:21:51 -04:00
karen jirak
02a8dc9818 Details Panel - Component card layout actions
The categories on the components for core entities now have an action menu. It has many things in it that will log.

#jira UE-194008
#rb  Brooke.Hubert

[CL 27717413 by karen jirak in ue5-main branch]
2023-09-08 13:15:51 -04:00
karen jirak
30fd8b7291 Create CVar to enable card layout through out the interface
This enables the card layout upon renewal of selected items in UE. I added the CVar DetailsPanel.Style.EnableCardLayout. When true throughout UE Card layout will be used, else the Classic details panel layout will be used. Also made it so the hiding\showing of the component editor is independant of the details style, by adding a ShouldHideComponentEditor to the DetailsVieiwObjectFilter, which is checked in SActorDetails.cpp to see if the Component Editor should be shown. SDetailsView has been updated to return the Card layout as the primary style key if DetailsPanel.Style.EnableCardLayout is true.


#jira UE-194197
#rb Ronald.Koppers

[CL 27475943 by karen jirak in ue5-main branch]
2023-08-29 23:07:56 -04:00
karen jirak
e8d9012e02 Feature:
* The details panel must be enhanced to show Components as cards
* This new Card style should be applicable to any details panel
* Subobject editor had to be hidden upon selection of entity

Scene graph ~ fix the linker errors caused by having to initialize a reference from importing the SDetailsView code

#jira UE-193821, UE-192032
#rb aditya.ravichandran

[CL 27395322 by karen jirak in ue5-main branch]
2023-08-25 18:28:05 -04:00
hilda cruz
94ea127efe [Backout] - CL27366337 due to build error
#rnx
[FYI] Karen.Jirak
Original CL Desc
-----------------------------------------------------------------
Feature:
* The details panel must be enhanced to show Components as cards
* This new Card style should be applicable to any details panel
* Subobject editor had to be hidden upon selection of entity

Scene graph ~ fix the linker errors caused by having to initialize a reference from importing the SDetailsView code

#jira UE-193821, UE-192032
#rb Brooke.Hubert

[CL 27366485 by hilda cruz in ue5-main branch]
2023-08-24 22:31:17 -04:00
karen jirak
b30cf9cdbf Feature:
* The details panel must be enhanced to show Components as cards
* This new Card style should be applicable to any details panel
* Subobject editor had to be hidden upon selection of entity

Scene graph ~ fix the linker errors caused by having to initialize a reference from importing the SDetailsView code

#jira UE-193821, UE-192032
#rb Brooke.Hubert

[CL 27366356 by karen jirak in ue5-main branch]
2023-08-24 22:07:53 -04:00
karen jirak
e2ba4c5032 Revert: Updates for Modular Class Display to add a widget registration system and get it working for BaseToolkit and toolbars....
#rb none

[CL 27299600 by karen jirak in ue5-main branch]
2023-08-23 03:14:14 -04:00
karen jirak
acea30606e Feature:
* The details panel must be enhanced to show Components as cards
* This new Card style should be applicable to any details panel
* Subobject editor had to be hidden upon selection of entity

#jira UE-192032
#rb Brooke.Hubert

[CL 27297832 by karen jirak in ue5-main branch]
2023-08-23 00:49:40 -04:00
mikko mononen
91a97670e9 [Backout] - CL27098170
[FYI] mikko.mononen
Original CL Desc
-----------------------------------------------------------------
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.

- Detach property nodes recursively on FPropertyNode::DestroyTree(), also clearing parent pointers to that the invlidate property path cannot be followed.
- Call update view (same as tick) after undo to invalidate property nodes which do not point to correct memory anymore
- Use FEditorDelegates::PostUndoRedo instead of undo client, as in some rare cases with consequtive undo/redo the undo client callbacks get called on a stale pointer
- Postpone gameplay tag caching to next tick, since the delegates are called in reverse and SDetailsView gets OnUndoRedo gets called after out customization

#jira UE-190882

[CL 27169489 by mikko mononen in ue5-main branch]
2023-08-17 07:44:28 -04:00
mikko mononen
5bb059d5a7 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.

- Detach property nodes recursively on FPropertyNode::DestroyTree(), also clearing parent pointers to that the invlidate property path cannot be followed.
- Call update view (same as tick) after undo to invalidate property nodes which do not point to correct memory anymore
- Use FEditorDelegates::PostUndoRedo instead of undo client, as in some rare cases with consequtive undo/redo the undo client callbacks get called on a stale pointer
- Postpone gameplay tag caching to next tick, since the delegates are called in reverse and SDetailsView gets OnUndoRedo gets called after out customization

#jira UE-190882

[CL 27098189 by mikko mononen in ue5-main branch]
2023-08-15 04:12:54 -04:00
mikko mononen
80760daca7 DetailsView: Update expansion state twice, once for initial nodes, and another time for nodes added by property customization
[CL 25888458 by mikko mononen in ue5-main branch]
2023-06-09 03:22:25 -04:00
aditya ravichandran
d822cb508a Add an option to the Outliner to bulk edit components in the Property Matrix
#rb jeanmichel.dignard
#preflight 646fc7ef560bb18621ab144b

[CL 25647201 by aditya ravichandran in ue5-main branch]
2023-05-26 12:51:22 -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
jordan hoffmann
cf8eb1d3c9 [Feature] AssetDefinition Merging
#jira UE-181566
#jira UE-181560
#rb ben.hoffman, dave.jones
#preflight 6439c1fec947f6523a79534d

[CL 25057796 by jordan hoffmann in ue5-main branch]
2023-04-14 21:26:21 -04:00
karen jirak
24f9ec7a4b Fixes editor crash in sequencer when altering the data of the signature of a skeletal mesh event
#jira UE-177427
#preflight 63f7720a26233b957f980675
#lockdown aurel.cordonnier

[CL 24387112 by karen jirak in ue5-main branch]
2023-02-23 14:59:41 -05:00
jordan hoffmann
9931940ee2 Re: Synchronize the scrolling between left and right details panels in Blueprint Diff (Refactor by request of Patrick Boutot)
#jira UE-171205
#rb dan.oconnor
#rb sabastian.nordgren
#preflight 63bda307c927e34482edbec5

[CL 23635315 by jordan hoffmann in ue5-main branch]
2023-01-10 18:11:13 -05:00
sebastian nordgren
4fd1dc3d47 Clear keyboard focus when setting an empty set of selected objects on an SDetailsView. This commits any pending changes before the widgets are destroyed.
This is necessary because although we register an OnRowReleased handler, we also register a Visibility handler in SDetailsViewBase::GetTreeVisibility(). The OnRowReleased delegate is called when the tree next Ticks(), but when the tree is cleared, it also gets its visibility set to Collapsed, which causes the next Tick() to not occur. Since there's no way to force the tree to Tick(), this is the next best thing.

Added a few trace macros.

#jira UE-162823
[REVIEW] [at]patrick.boutot
#rnx
#preflight 6376176b4f460e024c15a9cf

[CL 23174550 by sebastian nordgren in ue5-main branch]
2022-11-17 07:54:21 -05:00
sebastian nordgren
945d078d66 Enabled FStringPrefixTree usage in details view.
Changes from previous submit:
- ExpandedCustomItems uses TStringBuilder::Join()
- FStringPrefixTree::GetAllEntries() uses a const FString& to avoid a potential memcpy crash.
- Added checks to FStringPrefixTree for empty prefixes being added to the tree.
- Fixed bug where re-adding a substring along a node split boundary (eg. "FooFoo", "FooBar", "FooBar") would cause the intermediate node to be marked as a leaf (instead of the child), added tests for it.

[REVIEW] [at]richard.talbotwatkins, [at]paul.chipchase
#rnx
#preflight 636a59dc450be1d9f8261079

[CL 23069417 by sebastian nordgren in ue5-main branch]
2022-11-09 20:53:49 -05:00
aurel cordonnier
a67ce59368 [Backout] - CL23010059
[FYI] sebastian.nordgren
Original CL Desc
-----------------------------------------------------------------
Switched expanded nodes in SDetailsViewBase to use FStringPrefixTree.

This improved performance in one test case when calling RestoreExpandedItems() from ~500ms to ~100ms.

[REVIEW] [at]paul.chipchase
#rnx
#preflight 63650cc94b0e01486a51eb06

[CL 23019381 by aurel cordonnier in ue5-main branch]
2022-11-07 17:21:02 -05:00
sebastian nordgren
a82dc5670e Switched expanded nodes in SDetailsViewBase to use FStringPrefixTree.
This improved performance in one test case when calling RestoreExpandedItems() from ~500ms to ~100ms.

[REVIEW] [at]paul.chipchase
#rnx
#preflight 63650cc94b0e01486a51eb06

[CL 23011519 by sebastian nordgren in ue5-main branch]
2022-11-07 11:00:36 -05:00
george rolfe
70648874a7 Property Editor:
- Fix an issue with Details View not showing any items for a selected object (e.g. a material) with no registered sections when the previous object had visible sections selected.

#jira none
#rb sebastian.nordgren
#preflight 63401be8090af7205c048d5d
#lockdown alejandro.arango

[CL 22432366 by george rolfe in ue5-main branch]
2022-10-10 12:43:41 -04:00
lauren barnes
f831e770c4 Adding a property module setting for overriding property matrix availability
#preflight 6329c4c1fc7f1efbdf3ee708
#rb Rex.Hill

[CL 22105200 by lauren barnes in ue5-main branch]
2022-09-20 19:27:28 -04:00
sebastian nordgren
a089573ff2 Show Hidden Properties While Playing setting is now respected in the details view.
Previously, the checkbox value wasn't even listened to during the same startup, but rather the config value at startup was used, which made it very deceptive and sticky. This feature probably needs some thought in the future as well, because it can stall incredibly long.

#review-21563371 @karen.jirak, @lauren.barnes
#preflight 63204d4f8838676d10de6f9d

[CL 21980292 by sebastian nordgren in ue5-main branch]
2022-09-13 05:40:12 -04:00
aditya ravichandran
c9319900b1 DetailsView: Show a modified badge when any view option that filters down the results is active
#jira UE-151884
#rb lauren.barnes
#preflight 62d991ead54af4b9a211d4ca

[CL 21204814 by aditya ravichandran in ue5-main branch]
2022-07-21 14:10:27 -04:00
tom noonan
051aa900c4 Fix for crash when calling SDetailsView::ForceRefresh while already performing a refresh
[REVIEW] [at]matt.kuhlenschmidt, [at]jason.stasik

#ROBOMERGE-AUTHOR: tom.noonan
#ROBOMERGE-SOURCE: CL 20862699 via CL 20862711 via CL 20862720 via CL 20862724 via CL 20862734
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v971-20777995)

[CL 20876687 by tom noonan in ue5-main branch]
2022-06-29 12:20:19 -04:00