Commit Graph

33 Commits

Author SHA1 Message Date
wouter burgers
93261ee972 SourceControl: Fixed non package files starting with a dot (such as '.urcignore' or '.gitignore') showing up incorrectly in the 'Submit Files' dialog (they showed up with an empty string for AssetName).
#rnx
#rb Matt.Peters

[CL 35794924 by wouter burgers in ue5-main branch]
2024-08-26 04:13:38 -04:00
wouter burgers
cf83f5484a SkeinUE: Improved asset class display name in Snapshot History and Checked Out dialogs.
#rb Stuart.Hill

[CL 34733526 by wouter burgers in ue5-main branch]
2024-06-28 04:07:02 -04:00
matt peters
79da0bdad8 Updated display string for changelist descriptions to use space character in place of other whitespace characters (similar to P4V).
- allows viewing descriptions which traverse multiple lines
- only affects the single line view (tooltip, etc still display as before)
#rnx
#rb zach.rammell

[CL 30279052 by matt peters in ue5-main branch]
2023-12-12 17:18:07 -05:00
richard malo
239ac90407 Refactor in preparation of supporting Data Layer Instances saved in their own external package.
- Adapted existing code to propertly support external package on object not directly outered to the level.
- Generalized handling of external objects when renaming a world, resetting package loaders in ULevelStreamingLevelInstance, handling dirty external packages
- Implemented FExternalPackageHelper::CopyObjectsExternalPackageFilePathToClipboard
- Added optional PrimaryAssetDisplayName asset registry tag to allow for systems to use a display name (generalized version of ActorLabel tag)
#rb jeanfrancois.dube, patrick.enfedaque
#jira UE-197314

[CL 28537555 by richard malo in ue5-main branch]
2023-10-06 09:14:09 -04:00
han chu
2c25f2c11e New feature:
Unsaved asset drag-and-drop handler: When unsaved assets are selected and then dropped onto a changelist entry, they are checked out, saved, and then moved to the target changelist.

#jira UE-181906
#rb @zach.rammell

[CL 26976967 by han chu in ue5-main branch]
2023-08-09 18:41:28 -04:00
aditya ravichandran
1caacb933d Fix issues with icon color/padding in the changelists window
#rb zach.rammell
#jira UE-175837
#preflight 63daeaa54965eb8c33d3ba9f

[CL 23959565 by aditya ravichandran in ue5-main branch]
2023-02-01 17:54:20 -05:00
zach rammell
1edfb3ed31 Unsaved Assets in Changelist Window
#jira UE-169781
#preflight 63d4247a5354589b5c022e4c
#rb brooke.hubert
#lockdown jeanmichel.dignard

[CL 23923988 by zach rammell in ue5-main branch]
2023-01-31 01:26:50 -05:00
brooke hubert
2900a9310e Fixed an issue in the history window where strings that began with whitespace could show as empty in the description column
Standardized changelist description single line to a helper function to ensure the changelist window and history window have consistency

#rb wouter.burgers
#preflight 638e09551776b8c21c18e716

[CL 23394656 by brooke hubert in ue5-main branch]
2022-12-05 13:19:35 -05:00
aditya ravichandran
f8b7ee5555 Replace any instances of "Source Control" with "Revision Control" in text in the Editor
#rb JeanMichel.Dignard, Robb.Surridge
#preflight 637d180efa348e8480e8837e

[CL 23250808 by aditya ravichandran in ue5-main branch]
2022-11-23 11:57:50 -05:00
patrick laflamme
187570e7ff Optimized source control changelist to handle a reasonably large number of files smootly (5000-20000).
- Handling simple source control updates nofications, for example when user scroll the outliner which query source control status of the scrolled files, usually took 450ms with 15000 files to refresh in the changelist window now takes about 3ms.
  - Cached UI item to reuse them when user change the filter.
  - Detect and update only the item that changed.
  - Preserved the item sort order from the previous update when possible.
  - Lazily read the file modification timestamp only when the item is fist displayed.
  - Updated files modification in background (triggred when when a package is saved).
  - Only monitor source control file status for files that are visible (unless the view is sorted by status)
  - Splitted Uncontrolled Changelist and Source Controlled Changelist update to update then independently and just  update the one that was notified as updated.
  - Converted the file view from a STreeView to a SListView.

Updated changelist UI to display (X out of Y files) when a filter is active and remove files from the view.

#rb Luc.Eygasier
#jira UE-139957 Changelists window refreshes excessively
#preflight 63615588ce68f7cbb695d54a

[CL 22890915 by patrick laflamme in ue5-main branch]
2022-11-01 16:30:00 -04:00
patrick laflamme
29ffae40b5 Optimized the SSourceControlChangelist to prevent copying one string per selected item several times just to display the context menu.
- The function GetSelectedFiles() copied the full pathname of each selected files (can be thoudands) several times when opening the context menu, making it non-responsive.

#rb Patrick.Enfedaque
#preflight 635a9154f1493f9786662587

[CL 22811459 by patrick laflamme in ue5-main branch]
2022-10-27 11:59:24 -04:00
patrick laflamme
bdb87d6d26 Optimized source control changelist sorting
- Removed conversion/creation of temporary strings when sorting.
  - Removed several branching operations.
  - Used Stricmp rather than operator<() as it tells if the string is <> or == in a single operation.
  - Sorted the 'Last Modified' column using FDateTime rather that the FText/FString.
  - Mesured before/after the change with Insight, in average, the sorting 15 now times faster. (avg 2.4 ms for 7600 items).
 - Do not sort by default, waited until the user decide to sort to enable the feature.

#rb Patrick.Enfedaque
#jira UE-139957 - Changelists window refreshes excessively (Partially adressing this issue).
#preflight 63500e398176062ea7e3f6ed

[CL 22635606 by patrick laflamme in ue5-main branch]
2022-10-19 15:31:41 -04:00
patrick enfedaque
b1ba9a9d10 Fix FOfflineFileTreeItem display name (Folders)
- Use same code to retrieve asset display information then FFileTreeItem

#rb patrick.laflamme
#preflight 6336cec7e72271755f0e7bea

[CL 22272707 by patrick enfedaque in ue5-main branch]
2022-09-30 12:21:26 -04:00
patrick laflamme
d9a04862a3 Added the 'Last Saved' and 'User' column to the changelist window.
- Implemented sorting and searching for the new columns.
  - Added a FUpdateStatus request to the source control provider when the user selects a changelist.  This gets the users that checked out the files along with extra file status.

Added support to enable/disable changelist window columns for 'Type', 'Last Saved' and 'User' columns and persisted the settings.
Added tooltips over the changelist row that display the content of a column. Useful when the value is clipped because the column is too small.
Added tooltips over the changelist row header.
Prevented creation of useless temporary strings in PerforceSourceControlOperations.cpp

#rb Patrick.Enfedaque
#preflight 6323613367163bf6600d4fc6

[CL 22040806 by patrick laflamme in ue5-main branch]
2022-09-15 18:45:09 -04:00
patrick laflamme
aeddf4fe0c Implemented text search/filtering in the changelist window.
Changed the color of the uncontrolled changelist from gray to orange
Added an icon in the to the file status column header.

#jira UE-155216 - Make the selected changelist view (list of files in a CL) searchable.
#jira UE-155213 - Make the list of changelists searchable.
#rb Patrick.Enfedaque
#preflight 631b8c332b7fe03eb601ec03

[CL 21973932 by patrick laflamme in ue5-main branch]
2022-09-12 18:11:36 -04:00
Robert Millar
cc414a65b3 FNames containing asset paths are deprecated. FSoftObjectPath or FTopLevelAssetPath should be used instead.
Fixups for misc editor files.

#jira UE-161932
#rb matt.hoffman
#preflight 631a8b47967ffc68fbf81fbd

[CL 21909504 by Robert Millar in ue5-main branch]
2022-09-08 20:52:53 -04:00
patrick laflamme
6e10ae05f3 Fix CIS non-unity build error in SSoucrControlChangelistRows and SSourceControlCommon
#rb Trivial

[CL 21862856 by patrick laflamme in ue5-main branch]
2022-09-07 17:15:55 -04:00
patrick laflamme
b3737f5dd6 Updated the source control changelist code to be more reusable.
- Moved all source control table row widgets found in SSourceControlChangelists.cpp into a separated files SSourceControlChangelistRows.h/.cpp
 - Moved content SFileTableRow.h into SSourceControlChangelistRows.h/.cpp and deleted the file.
 - Created column Id constants for the changelist files "Icon", "Name", "Path", "Type" rather than using hardcoded string.
 - Moved functions shared by the SSourceCOntrolChangeslists.cpp and SSourceControlChangelistRows.cpp into SSourceControlCommon.h/.cpp.

#rb Luc.Eygasier
#preflight 6317ab57f448dc6e583f2132

[CL 21862849 by patrick laflamme in ue5-main branch]
2022-09-07 17:15:39 -04:00
patrick laflamme
e3370eeb19 Implemented 2-columns sort in the changelist window.
Added a tooltip over the 'icon' colum in the changelist window.

#jira UE-155217 - Make the selected changelist view (list of files in a CL) sortable (2-columns sort).
#rb Patrick.Enfedaque
#preflight 63176791980179553e3d5dae

[CL 21827312 by patrick laflamme in ue5-main branch]
2022-09-06 15:43:24 -04:00
patrick enfedaque
2d8d4adaa3 SourceControlWindowExtender: Extends functionality of the SourceControlWindows window
Actor: Focus, Pin, Select
Assets: Browse To

#jira UE-155245
#rb patrick.laflamme, richard.malo
#preflight 630796aa0968fbaf691de565

[CL 21590365 by patrick enfedaque in ue5-main branch]
2022-08-26 11:04:20 -04:00
patrick laflamme
7f2a598696 Refactored the Changelist Window UI to work better with large changelists along with bug fixes.
This submit should not regress any existing functionalites of the previous widget.

Along with the user interface changes, notable bug fixes were included
  - If a changelist is not specified for P4 operations 'Mark for Add', 'Mark for Delete and 'Checkout', defaulted to the 'default' P4 changlist. Without a valid changelist, the cache wasn't properly updated.
  - Fixed updating the cache for P4 'Mark for delete' operation not correctly updating the file changelist cached in the file state.

Other changes:
  - P4 changelists are now always returned sorted by changelist number, ascending.
  - Some of the safe operations were running synchronous are not running asynchrnous (create new changelist, delete empty changelist, delete shelved files).

This submit addresses the following Jiras:

#jira UE-155207 - Refactor the changelist window layout to have the left/right panel.
#jira UE-155209 - Add the context menu on right click on a file or a changelist.
#jira UE-155218 - Support creating new empty changelist from the changelist view.
#jira UE-155220 - Support moving files from the selected changelist (right view) to another changelist (left view)
#jira UE-155211 - Add visual feedback for any operation taking more than 0.5s.
#jira UE-155212 - Display a list of uncontrolled files in the left panel of the changelist window
#jira UE-155499 - Changelist windows buttons should be disabled if SCC is disabled
#jira UE-155229 - Add an option to automatically refresh the changelist window when new assets are imported|created (as uncontrolled), marked for add, checked out, marked for delete
#jira UE-107577 - Source Control's Changelists dialog does not refresh to reflect changes made while open

#rb Patrick.Enfedaque
#preflight 62ff946ef7404b55a326297b

[CL 21499885 by patrick laflamme in ue5-main branch]
2022-08-22 21:20:05 -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
Matt Peters
7ad238a806 AssetRegistry includes (Engine/Source): change #include "AssetData.h" -> #include "AssetRegistry/AssetData.h", and similar for the other moved AssetRegistry headers.
#rb Zousar.Shaker
#rnx
#preflight 6270509a220f89f0ad573030

[CL 20016982 by Matt Peters in ue5-main branch]
2022-05-02 18:06:48 -04:00
richard malo
481f65fe16 New Actor Folders objects.
- When enabled, folders are actual objects : modifying a folder won't affect actors (more compliant with OFPA).
- Enabled by default for World Partition and Level Instances.
- Can be enabled on regular levels (experimental feature 'Use Actor Folder Objects').
- If Level uses OFPA, ActorFolders will also be saved in their own package (but will use __ExternalObjects__ root folder).
- In a future refactoring, external actors will also be moved in the same root folder.
- Generalized saving object in an external package (different from its outer package)
- World outliner supports old folders and new actor folder objects : Levels using the actor folder objects will show a root Level node (like Level Instances).
#rb patrick.enfedaque, jeanfrancois.dube
#preflight 61d84b356511bc498e5cb858

#ROBOMERGE-AUTHOR: richard.malo
#ROBOMERGE-SOURCE: CL 18543443 in //UE5/Release-5.0/... via CL 18543482
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18543525 by richard malo in ue5-release-engine-test branch]
2022-01-07 10:01:19 -05:00