Commit Graph

88 Commits

Author SHA1 Message Date
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
mikko mononen
70c2abf5cc Added ScrollPropertyIntoView() to details view and fixed default property button padding
- Fixed padding of default buttons contaier (or else the widget created with CreateDefaultPropertyButtonWidgets() will unintentionally make a row taller)
- Added IDetailsView.ScrollPropertyIntoView(), similar to HighlightProperty() sans does not set highlight

[CL 27407050 by mikko mononen in ue5-main branch]
2023-08-28 04:23:29 -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
George Rolfe
069b160d74 PropertyEditor animate multiple rows
#jira UE-184924
#rb karen.jirak
#preflight 64704d82296b2b37c6ec0cc8

[CL 25638804 by George Rolfe in ue5-main branch]
2023-05-26 03:55:07 -04:00
jordan hoffmann
ce19d1c65c [Feature] DetailsSplitter
This is a splitter that can dynamically connect matching properties as well as provide buttons for copying values between the two details panels.
#rb ben.hoffmann, dave.jones, karen.jirak
#jira UE-181566
#preflight 64386ecf930b3b84925271d9

[CL 25050248 by jordan hoffmann in ue5-main branch]
2023-04-14 17:07:14 -04:00
jordan hoffmann
fce2dc06b3 [Feature] AsyncTreeDifferences
This is an improvement on how we diff object details so we can diff in real time and unify several algorithms into one
AsyncTreeDifferences is a generic structure that can diff any tree while AsyncDetailViewDiff is a specialization of that for details panels
Docs: https://docs.google.com/document/d/1rwY-FtTxq2BVptLaMdpKNpzb4hOSn8efm-Z-cF0fBhE/edit?usp=sharing
#rb ben.hoffmann, ben.zeigler, dave.jones
#preflight 6437336e0c4277fc0bdc4d8a

[CL 25027228 by jordan hoffmann in ue5-main branch]
2023-04-13 12:15:13 -04: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
jordan hoffmann
9baffcf5f1 [Backout] - CL23449544
[FYI] patrick.boutot
Original CL Desc
-----------------------------------------------------------------
Synchronize the scrolling between left and right details panels in Blueprint Diff
#jira UE-171205
#rb dan.oconnor
#preflight 6391255b5624e6da5ea8354e

[CL 23481543 by jordan hoffmann in ue5-main branch]
2022-12-12 15:08:44 -05:00
jordan hoffmann
faff92b47a Synchronize the scrolling between left and right details panels in Blueprint Diff
#jira UE-171205
#rb dan.oconnor
#preflight 6391255b5624e6da5ea8354e

[CL 23452486 by jordan hoffmann in ue5-main branch]
2022-12-08 14:49:23 -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
jeremie roy
dbbf515160 Add method to set the minimum right column width in a details panel
#preflight 63612fdc2b5338aceb3f3854
#rb sebastian.nordgren
#jira UE-165306

[CL 22883472 by jeremie roy in ue5-main branch]
2022-11-01 11:25:39 -04:00
sebastian nordgren
a70b2893e3 Removed inline forward declarations.
#rb trivial
#rnx
#preflight 6335b97e936ff7e3dcb6b381

[CL 22263060 by sebastian nordgren in ue5-main branch]
2022-09-30 00:43:40 -04:00
sebastian nordgren
ac18a4c77f Expanding the Advanced node no longer causes previously collapsed nodes to re-expand.
The Advanced node is really just a filter, and we call RestoreExpandedItems() after filtering nodes. Now we also call SaveExpandedItems() first.

Reported in UDN: https://epicgames.lightning.force.com/lightning/r/Case/5004z00001fDN3RAAW/view

#review-21069573 @lauren.barnes
#preflight 62fe1b72200ff87e07aed798

[CL 21439955 by sebastian nordgren in ue5-main branch]
2022-08-18 07:12:12 -04:00
sebastian nordgren
2bb8c0f18a Scrolling a row outside of the Details view now commits any changes that were being made to that row.
#jira UE-134865
#rb matt.kuhlenschmidt
#preflight 620cb57701253d2e19fe9efa

[CL 19011614 by sebastian nordgren in ue5-main branch]
2022-02-16 03:42:24 -05:00
daren cheng
284c0a0eec Add shift click copy / paste to details panel
#jira UE-134754
#rb sebastian.nordgren
#preflight 61952207b32bbfdc5007c419
#robomerge[BOT4] 5.0
#robomerge[BOT1] Main

[CL 18229597 by daren cheng in ue5-main branch]
2021-11-17 17:02:14 -05:00
sebastian nordgren
1131b138d5 Moved FDetailColumnSizeData to its own file.
#rb paul.chipchase
#preflight 617c0f47c44dc500016a989d

[CL 18017897 by sebastian nordgren in ue5-main branch]
2021-11-02 09:22:12 -04:00
aurel cordonnier
34f55d3a4a Merge from Release-Engine-Test @ 17946149 to UE5/Main
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035

[CL 17949667 by aurel cordonnier in ue5-main branch]
2021-10-27 15:14:40 -04:00
aurel cordonnier
a12d56ff31 Merge from Release-Engine-Staging @ 17791557 to Release-Engine-Test
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485

[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-12 21:21:22 -04:00
sebastian nordgren
bf3cddefc8 Details view style refresh:
- rows are now 26 pixels high
- right column is narrower unless the Sequencer is invoked
- padding has been removed to make more rows fit on the screen at once
- Advanced dropdown is now styled like a normal group and thus the bottom node is gone

[at]editor-ux
#preflight 6140652a9dc6c8000144500a

#ROBOMERGE-AUTHOR: sebastian.nordgren
#ROBOMERGE-SOURCE: CL 17537602 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17537624 by sebastian nordgren in ue5-release-engine-test branch]
2021-09-16 08:34:39 -04:00
sebastian nordgren
6577bca4d4 Added section selector to the details view. It is now possible to register a category to a section, which will cause the entire category to be shown if the relevant section is selected.
Moved FDetailFilter to its own file.

#rb matt.kuhlenschmidt
#preflight 61361043bdfce00001c0a317

#ROBOMERGE-AUTHOR: sebastian.nordgren
#ROBOMERGE-SOURCE: CL 17442135 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17442153 by sebastian nordgren in ue5-release-engine-test branch]
2021-09-07 03:39:26 -04:00
phillip kavan
1b6914ca4b Extends the class viewer module to support multiple custom class filters along with an optional associated view option flag.
Additional changes:
- Deprecates the previous method for specifying a singular custom class viewer filter and updates all existing occurrences of this pattern in engine code.
- Extends the property editor utilities interface to expose custom class filter(s) that can be applied to the class picker widget used for editing class property values.
- Adds an implementation of this interface to SDetailsView such that additional class filter(s) can now be configured to be applied to all underlying class property nodes.

#jira UE-108316
#rb Lauren.Barnes
#preflight 60c2102e8ae8960001110d50

#ROBOMERGE-OWNER: phillip.kavan
#ROBOMERGE-AUTHOR: phillip.kavan
#ROBOMERGE-SOURCE: CL 16623084 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v831-16623017)
#ROBOMERGE-CONFLICT from-shelf

[CL 16623246 by phillip kavan in ue5-release-engine-test branch]
2021-06-10 10:40:50 -04:00