From ab5bb7975491d35674821d6edcdd17f2935ab321 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 16 May 2024 10:34:57 +0200 Subject: [PATCH] Fix regression in collections editing after improving ReadOnly option --- Source/Editor/CustomEditors/Editors/CollectionEditor.cs | 2 +- Source/Editor/CustomEditors/Editors/DictionaryEditor.cs | 1 + Source/Editor/GUI/Timeline/Tracks/ConductorTrack.cs | 2 +- Source/Editor/GUI/Timeline/Tracks/EventTrack.cs | 2 +- Source/Editor/Tools/Foliage/FoliageTypesTab.cs | 2 +- Source/Engine/Core/Config/LayersAndTagsSettings.cs | 2 +- Source/Engine/Level/Actors/BoxBrush.h | 2 +- Source/Engine/Level/Actors/ModelInstanceActor.h | 2 +- Source/Engine/Scripting/Attributes/CollectionAttribute.cs | 5 +++++ 9 files changed, 13 insertions(+), 7 deletions(-) diff --git a/Source/Editor/CustomEditors/Editors/CollectionEditor.cs b/Source/Editor/CustomEditors/Editors/CollectionEditor.cs index de7a5d1bf..b06e2d55d 100644 --- a/Source/Editor/CustomEditors/Editors/CollectionEditor.cs +++ b/Source/Editor/CustomEditors/Editors/CollectionEditor.cs @@ -227,7 +227,7 @@ namespace FlaxEditor.CustomEditors.Editors var collection = (CollectionAttribute)attributes?.FirstOrDefault(x => x is CollectionAttribute); if (collection != null) { - _canResize = !collection.ReadOnly; + _canResize = collection.CanResize; _readOnly = collection.ReadOnly; _minCount = collection.MinCount; _maxCount = collection.MaxCount; diff --git a/Source/Editor/CustomEditors/Editors/DictionaryEditor.cs b/Source/Editor/CustomEditors/Editors/DictionaryEditor.cs index 0bf477834..23568f0ca 100644 --- a/Source/Editor/CustomEditors/Editors/DictionaryEditor.cs +++ b/Source/Editor/CustomEditors/Editors/DictionaryEditor.cs @@ -189,6 +189,7 @@ namespace FlaxEditor.CustomEditors.Editors var collection = (CollectionAttribute)attributes?.FirstOrDefault(x => x is CollectionAttribute); if (collection != null) { + _canEditKeys &= collection.CanReorderItems; _readOnly = collection.ReadOnly; _notNullItems = collection.NotNullItems; if (collection.BackgroundColor.HasValue) diff --git a/Source/Editor/GUI/Timeline/Tracks/ConductorTrack.cs b/Source/Editor/GUI/Timeline/Tracks/ConductorTrack.cs index ae25bf03c..4b2cfbe5e 100644 --- a/Source/Editor/GUI/Timeline/Tracks/ConductorTrack.cs +++ b/Source/Editor/GUI/Timeline/Tracks/ConductorTrack.cs @@ -130,7 +130,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks /// The keyframes. /// [EditorDisplay("Keyframes", EditorDisplayAttribute.InlineStyle), ExpandGroups] - [Collection(CanReorderItems = false, ReadOnly = true)] + [Collection(CanReorderItems = false, CanResize = true)] public List> Keyframes; /// diff --git a/Source/Editor/GUI/Timeline/Tracks/EventTrack.cs b/Source/Editor/GUI/Timeline/Tracks/EventTrack.cs index a7cc2e582..a1c85f5c3 100644 --- a/Source/Editor/GUI/Timeline/Tracks/EventTrack.cs +++ b/Source/Editor/GUI/Timeline/Tracks/EventTrack.cs @@ -159,7 +159,7 @@ namespace FlaxEditor.GUI.Timeline.Tracks /// The parameters values. /// [EditorDisplay("Parameters", EditorDisplayAttribute.InlineStyle), ExpandGroups] - [Collection(CanReorderItems = false, ReadOnly = true)] + [Collection(CanReorderItems = false, CanResize = true)] public object[] Parameters; /// diff --git a/Source/Editor/Tools/Foliage/FoliageTypesTab.cs b/Source/Editor/Tools/Foliage/FoliageTypesTab.cs index acdcf68eb..f7a9d1ed3 100644 --- a/Source/Editor/Tools/Foliage/FoliageTypesTab.cs +++ b/Source/Editor/Tools/Foliage/FoliageTypesTab.cs @@ -82,7 +82,7 @@ namespace FlaxEditor.Tools.Foliage } } - [EditorOrder(20), EditorDisplay("Model"), Collection(ReadOnly = true), Tooltip("Model materials override collection. Can be used to change a specific material of the mesh to the custom one without editing the asset.")] + [EditorOrder(20), EditorDisplay("Model"), Collection(CanResize = true), Tooltip("Model materials override collection. Can be used to change a specific material of the mesh to the custom one without editing the asset.")] public MaterialBase[] Materials { get diff --git a/Source/Engine/Core/Config/LayersAndTagsSettings.cs b/Source/Engine/Core/Config/LayersAndTagsSettings.cs index 14015b36d..005906872 100644 --- a/Source/Engine/Core/Config/LayersAndTagsSettings.cs +++ b/Source/Engine/Core/Config/LayersAndTagsSettings.cs @@ -18,7 +18,7 @@ namespace FlaxEditor.Content.Settings /// /// The layers names. /// - [EditorOrder(10), EditorDisplay("Layers", EditorDisplayAttribute.InlineStyle), Collection(ReadOnly = true, Display = CollectionAttribute.DisplayType.Inline)] + [EditorOrder(10), EditorDisplay("Layers", EditorDisplayAttribute.InlineStyle), Collection(CanResize = true, Display = CollectionAttribute.DisplayType.Inline)] public string[] Layers = new string[32]; /// diff --git a/Source/Engine/Level/Actors/BoxBrush.h b/Source/Engine/Level/Actors/BoxBrush.h index 5cb26988c..3f368693d 100644 --- a/Source/Engine/Level/Actors/BoxBrush.h +++ b/Source/Engine/Level/Actors/BoxBrush.h @@ -90,7 +90,7 @@ public: /// /// Gets the brush proxies per surface. /// - API_PROPERTY(Attributes="Serialize, EditorOrder(100), EditorDisplay(\"Surfaces\", EditorDisplayAttribute.InlineStyle), Collection(CanReorderItems = false, NotNullItems = true, ReadOnly = true)") + API_PROPERTY(Attributes="Serialize, EditorOrder(100), EditorDisplay(\"Surfaces\", EditorDisplayAttribute.InlineStyle), Collection(CanReorderItems = false, NotNullItems = true, CanResize = true)") Array GetSurfaces() const; /// diff --git a/Source/Engine/Level/Actors/ModelInstanceActor.h b/Source/Engine/Level/Actors/ModelInstanceActor.h index 793176ae0..c7cf2001b 100644 --- a/Source/Engine/Level/Actors/ModelInstanceActor.h +++ b/Source/Engine/Level/Actors/ModelInstanceActor.h @@ -41,7 +41,7 @@ public: /// /// Gets the model entries collection. Each entry contains data how to render meshes using this entry (transformation, material, shadows casting, etc.). /// - API_PROPERTY(Attributes="Serialize, EditorOrder(1000), EditorDisplay(\"Entries\", EditorDisplayAttribute.InlineStyle), Collection(CanReorderItems=false, NotNullItems=true, ReadOnly=true, Spacing=10)") + API_PROPERTY(Attributes="Serialize, EditorOrder(1000), EditorDisplay(\"Entries\", EditorDisplayAttribute.InlineStyle), Collection(CanReorderItems=false, NotNullItems=true, CanResize=false, Spacing=10)") FORCE_INLINE const Array& GetEntries() const { return Entries; diff --git a/Source/Engine/Scripting/Attributes/CollectionAttribute.cs b/Source/Engine/Scripting/Attributes/CollectionAttribute.cs index 59f24d017..d0b85d8cc 100644 --- a/Source/Engine/Scripting/Attributes/CollectionAttribute.cs +++ b/Source/Engine/Scripting/Attributes/CollectionAttribute.cs @@ -46,6 +46,11 @@ namespace FlaxEngine /// public bool CanReorderItems = true; + /// + /// Gets or sets whether items can be added or removed from this collection. + /// + public bool CanResize = true; + /// /// Gets or sets whether the items of this collection can be null. If true, applications using this collection should prevent user to add null items to the collection. ///