Commit Graph

100 Commits

Author SHA1 Message Date
thomas sarkanen
a0daf6d314 Fixed per-track compression to not allow selection of invalid scale formats
Also fixes various property metadata helpers when dealing with enums held in containers

#jira UE-151969
#rb jaime.cifuentes

[CL 30775416 by thomas sarkanen in ue5-main branch]
2024-01-22 11:21:18 -05:00
robert rouhani
8e69aa74c1 Remove property buttons on the header row of statically sized arrays of class properties
#jira UE-204021
#rb aditya.ravichandran

[CL 30662663 by robert rouhani in ue5-main branch]
2024-01-17 12:48:21 -05:00
vincent gauthier
18cd69b474 PropertyEditor Truncation warning fixes
#jira UE-166271
#rb zahra.nikbakht

[CL 30624677 by vincent gauthier in ue5-main branch]
2024-01-15 17:05:29 -05:00
charles lefebvre
e476b609c7 Replace GetEnabledEnumValues by GetRestrictedEnumValues
#rb Guillaume.Guay
#tests PIE

[CL 30412476 by charles lefebvre in ue5-main branch]
2023-12-20 10:40:50 -05:00
charles lefebvre
059cd28bb4 Add GetValidEnumValues to be able to filter enums dynamically
#rb Guillaume.Guay
[FYI] jamie.dale, karen.jirak
#rnx

[CL 30401851 by charles lefebvre in ue5-main branch]
2023-12-19 15:29:51 -05:00
jared cotton
b6aa506f02 SOL-5617 - "The editor UI for [at]editable optionals does not respect property type customization"
- if we encounter a set option in `FDetailPropertyRow` we use its value instead. This allows for cusomizations to just 'work' without any special handling for options.
    - Note: There is some case-handling to ensure the display name is still the options rather than the values.

[CL 30214987 by jared cotton in ue5-main branch]
2023-12-08 13:18:12 -05:00
jared cotton
6d13f63c39 UE-191200 - "Add UE support for [at]editable fields of optional types"
Add's support for `[at]editable` on optionals:

`FOptionalProperty` changes:
- Added custom `__INIT__` logic for `FOptionalProperty::ExportText` which previously could output no text as the optional value was initialized but returned an empty string as its export text (ie: empty arrays, maps, sets, etc). This caused the future text imports to be incorrect.

`FPropertyNode` changes:
- Added `OptionalValueNode` as private member similar in idea to existing `PropertyKeyNode`. It stores the generated `FPropertyNode` for a FOptionalValue's Value when it is set.
- Added helper function `GetOrCreateOptionalValueNode` which either returns the existing `OptionalValueNode` OR creates one if appropriate.
    - Note: This is where we bind a lambda to our Optional's Value FPropertyNode's `RebuildChildren` event which is how we update/rebuild when needed. In places where we would update/rebuild we instead call our Value to do so instead if set and then update after that has been done via this callback.

Added new widget `SPropertyEditorOptional`
- This either:
    - shows a dropdown of "Set all" or "Unset all" if we have multiple values selected
    - generates the editor for whatever our set value is if we have a single value (See `GetSingleReadAddress`)
    - shows a 'set value' button if we are not set

#JIRA UE-191200
#rb karen.jirak
#rb kurtis.schmidt

[CL 28253719 by jared cotton in ue5-main branch]
2023-09-26 18:57:13 -04:00
karen jirak
6de65f8c7e Memory leak in Array draghandles in PropertyEditorHelpers.cpp
#jira UE-185407
#rb Matt.Kuhlenschmidt

[CL 25864287 by karen jirak in ue5-main branch]
2023-06-07 21:31:13 -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
jamie dale
1219471e56 Added support for overriding enum value display names on a per-property basis
This can be specified by the EnumValueDisplayNameOverrides meta-data, and is a semi-colon separated list of Name=DisplayName pairs where the DisplayName can be a raw string or a NS/LOCTEXT style localized value.

#preflight 64525920d863ba2621179ac2
#rb Rex.Hill

[CL 25323006 by jamie dale in ue5-main branch]
2023-05-03 15:27:50 -04:00
lauren barnes
7c253dc590 Changing FDetailWidgetRow argument and member variable to TOptional versions because we may not have the row for customized details panels
#rb trivial
[FYI] Matt.Kuhlenschmidt, Karen.Jirak
#preflight skip

[CL 24873216 by lauren barnes in ue5-main branch]
2023-03-31 12:10:05 -04:00
lauren barnes
94e45bab42 [Backout] - CL24860754
[FYI] alex.kahn
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL24859089 - CIS Compile Error part 2
[FYI] Lauren.Barnes
Original CL Desc
-----------------------------------------------------------------
Copy and paste on a details row containing an asset picker will now go through the SPropertyEditorAsset paste first.
#jira UE-181542
#preflight 6425a77450546ea33640c424
#rb Matt.Kuhlenschmidt

[CL 24871532 by lauren barnes in ue5-main branch]
2023-03-31 10:59:51 -04:00
alex kahn
93c376610c [Backout] - CL24859089 - CIS Compile Error part 2
[FYI] Lauren.Barnes
Original CL Desc
-----------------------------------------------------------------
Copy and paste on a details row containing an asset picker will now go through the SPropertyEditorAsset paste first.
#jira UE-181542
#preflight 6425a77450546ea33640c424
#rb Matt.Kuhlenschmidt

[CL 24867877 by alex kahn in ue5-main branch]
2023-03-31 02:44:06 -04:00
lauren barnes
1808b74992 Copy and paste on a details row containing an asset picker will now go through the SPropertyEditorAsset paste first.
#jira UE-181542
#preflight 6425a77450546ea33640c424
#rb Matt.Kuhlenschmidt

[CL 24867863 by lauren barnes in ue5-main branch]
2023-03-31 02:42:22 -04:00
robert manuszewski
d1443992e1 Deprecating ANY_PACKAGE.
This change consists of multiple changes:

Core:
- Deprecation of ANY_PACKAGE macro. Added ANY_PACKAGE_DEPRECATED macro which can still be used for backwards compatibility purposes (only used in CoreUObject)
- Deprecation of StaticFindObjectFast* functions that take bAnyPackage parameter
- Added UStruct::GetStructPathName function that returns FTopLevelAssetPath representing the path name (package + object FName, super quick compared to UObject::GetPathName) + wrapper UClass::GetClassPathName to make it look better when used with UClasses
- Added (Static)FindFirstObject* functions that find a first object given its Name (no Outer). These functions are used in places I consider valid to do global UObject (UClass) lookups like parsing command line parameters / checking for unique object names
- Added static UClass::TryFindType function which serves a similar purpose as FindFirstObject however it's going to throw a warning (with a callstack / maybe ensure in the future?) if short class name is provided. This function is used  in places that used to use short class names but now should have been converted to use path names to catch any potential regressions and or edge cases I missed.
- Added static UClass::TryConvertShortNameToPathName utility function
- Added static UClass::TryFixShortClassNameExportPath utility function
- Object text export paths will now also include class path (Texture2D'/Game/Textures/Grass.Grass' -> /Script/Engine.Texture2D'/Game/Textures/Grass.Grass')
- All places that manually generated object export paths for objects will now use FObjectPropertyBase::GetExportPath
- Added a new startup test that checks for short type names in UClass/FProperty MetaData values

AssetRegistry:
- Deprecated any member variables (FAssetData / FARFilter) or functions that use FNames to represent class names and replaced them with FTopLevelAssetPath
- Added new member variables and new function overloads that use FTopLevelAssetPath to represent class names
- This also applies to a few other modules' APIs to match AssetRegistry changes

Everything else:
- Updated code that used ANY_PACKAGE (depending on the use case) to use FindObject(nullptr, PathToObject), UClass::TryFindType (used when path name is expected, warns if it's a short name) or FindFirstObject (usually for finding types based on user input but there's been a few legitimate use cases not related to user input)
- Updated code that used AssetRegistry API to use FTopLevelAssetPaths and USomeClass::StaticClass()->GetClassPathName() instead of GetFName()
- Updated meta data and hardcoded FindObject(ANY_PACKAGE, "EEnumNameOrClassName") calls to use path names

#jira UE-99463
#rb many.people
[FYI] Marcus.Wassmer
#preflight 629248ec2256738f75de9b32

#codereviewnumbers 20320742, 20320791, 20320799, 20320756, 20320809, 20320830, 20320840, 20320846, 20320851, 20320863, 20320780, 20320765, 20320876, 20320786

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 20430220 via CL 20433854 via CL 20435474 via CL 20435484
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)

[CL 20448496 by robert manuszewski in ue5-main branch]
2022-06-01 03:46:59 -04:00
Lauren Barnes
6248f8d412 Replacing legacy EditorStyle calls with AppStyle
#preflight 6272a74d2f6d177be3c6fdda
#rb Matt.Kuhlenschmidt

#ROBOMERGE-OWNER: Lauren.Barnes
#ROBOMERGE-AUTHOR: lauren.barnes
#ROBOMERGE-SOURCE: CL 20057269 via CL 20070159 via CL 20072035 via CL 20072203
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
#ROBOMERGE-CONFLICT from-shelf

[CL 20105363 by Lauren Barnes in ue5-main branch]
2022-05-09 13:12:28 -04:00
George Rolfe
62e2ce4d8d InvalidEnumValues metadata support (inverse of ValidEnumValues)
#jira none

#preflight 61f89c86f657e25a5908ebe7

#rb matt.kuhlenschmidt

[CL 18805064 by George Rolfe in ue5-main branch]
2022-01-31 22:36:04 -05:00
daren cheng
773cf100f4 Add FPropertyHandleColor to support copy / paste between different color types.
#jira UETOOL-4586
#rb sebastian.nordgren
#preflight 619521439f7a6462e05b64e9
#robomerge[BOT1] Main

[CL 18229602 by daren cheng in ue5-main branch]
2021-11-17 17:02:39 -05:00
sebastian nordgren
366b191494 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

#review-17520182 @editor-ux
#preflight 6140652a9dc6c8000144500a

[CL 17537602 by sebastian nordgren in ue5-main branch]
2021-09-16 08:33:49 -04:00
Steven Dao
71b14851af Show GrabHand cursor for drag-and-drop handle in details rows
This is intended to make the drag behavior more noticeable and a bit more consistent with some other places in the editor that allow drag-and-drop, e.g., the Create menu
Also update the mouse cursor in various drag ops to use GrabHandClosed while dragging

#rb louise.rasmussen
#preflight 6142404db5a4fa000137d28a

[CL 17525962 by Steven Dao in ue5-main branch]
2021-09-15 16:16:33 -04:00
Steven Dao
9fa9237525 Drag-and-drop to reorder variables in FUserDefinedStructureEditor
- Allow drag-and-drop behavior to be customized for a details widget row
- Cleanup PropertyEditorHelpers::MakePropertyReorderHandle (it was setting the enabled attribute which always ended up getting overwritten)
- Add drag-and-drop handler+op for UserDefinedStructureEditor to enable drag-and-drop reordering. Removed buttons for moving up/down.

#jira UETOOL-2776
#rb sebastian.nordgren
#preflight 6130deb01a52e20001a6c93b

[CL 17404287 by Steven Dao in ue5-main branch]
2021-09-02 12:06:25 -04:00
Phillip Kavan
dfa32e9708 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

[CL 16623084 by Phillip Kavan in ue5-main branch]
2021-06-10 10:31:37 -04:00
sebastian nordgren
ca7a047932 Edit conditions for properties that don't support edit condition toggles no longer checkSlow when retrieving the check state, but rather only when setting it.
CustomEditConditionValueChanged handlers are now postfixed with a call to FPropertyNode::InvalidateCachedState(), which causes the IsEditConst state to refresh.

Removed unnecessary code to access the PropertyEditor->IsEditConditionMet(), which is stored in EditConditionValue now.

#review @lauren.barnes, @patric.boutot
#jira FROST-1702

[CL 16008018 by sebastian nordgren in ue5-main branch]
2021-04-14 13:15:46 -04:00
sebastian nordgren
0aace23acf FPropertyEditorHelpers::GetMetadataOptionsKey now returns an FName. Internally, FProperty::GetMetaData deals with FName keys, so it makes sense to introduce them as early as possible.
#fyi luke.thatcher

[CL 15872334 by sebastian nordgren in ue5-main branch]
2021-03-31 04:11:32 -04:00
Luke Thatcher
199fe78b79 Add "GetKeyOptions" and "GetValueOptions" uproperty metadata to allow combobox dropdowns on TMap FString/FName key/value pairs.
This makes it possible to declare a UPROPERTY like so:

    UPROPERTY(EditAnywhere, meta = (GetKeyOptions="GetValidItemKeys"))
    TMap<FString, FString> MapOfItems;

and have the dropdown appear only on the key field.

#rb Lauren.Barnes
#fyi Vincent.Gauthier,Sebastian.Nordgren
#preflight 606229ea57aca40001ff1441

[CL 15855122 by Luke Thatcher in ue5-main branch]
2021-03-29 16:34:46 -04:00