Search Issue Tracker
Fix In Review for 2022.1.X
Votes
0
Found in
2022.1
2022.1.0b2
2022.2
Issue ID
1392262
Regression
No
ArgumentOutOfRangeException error is thrown when element is deleted in the PropertyDrawer ListView
Reproduction steps:
1. Open the user's project
2. Select "New List View Container.asset" in the Assets folder
3. Press the '+' button in the Properties list to add a new ItemProperty
4. Choose one of the proposed options to add
5. Press the '-' button in the Properties list to remove an ItemProperty
Expected result: The selected element is deleted without any errors
Actual result: The selected element sometimes (about 1/3 times) is not deleted and errors are thrown: \
1st error - "ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection."
2nd error - "SerializedProperty _item._properties.Array.data[X] has disappeared! UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)"
Reproducible with: 2022.1.0b11, 2022.2.0a7
Could not test with: 2019.4.36f1, 2020.3.30f1, 2021.2.15f1(2019.4, 2020.3 - "Assets/Scripts/Editor/CustomControl/CustomDropDown.cs(30,37): error CS8124: Tuple must contain at least two elements."; 2021.2 - "Assets/Scripts/Editor/ListViewExample/InventoryItemPropertyDrawer.cs(123,51): error CS1061: 'SerializedProperty' does not contain a definition for 'boxedValue' and no accessible extension method 'boxedValue' accepting a first argument of type 'SerializedProperty'")
Notes:
- If an element wasn't deleted, only the 1st error appears
- Reproducible on both Windows 10 and macOS
Comments (1)
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Opening Terrain Prefab in Prefab Editing Mode throws "NullReferenceException" error
- [Search] Dragging query pills put them behind the search text field
- A CustomPropertyDrawer that returns a PropertyField for a property named the same as a child field will not render all child fields
- Graphics Settings shows default values instead of the real values in the Rendering Debugger when Volume.profile is assigned via script
- Deleting multiple Tags throws “NullReferenceException”, and "Retrieving array element that was out of bounds" errors when holding the Enter key
emptybraces
Apr 05, 2022 17:38
2nd error is 100% occured on my project.(version 2021.2.13f )
Called from UnityEditor.RetainedMode:UpdateSchedulers () will be used the changed list, no problem.
However, the one called from UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) uses the unchanged list and an error occurs.
Workaround at me:
int removed_idx = -1;
listview.bindItem = (VisualElement element, int index) =>
{
if (removed_idx == index)
{
removed_idx = -1;
return;
}
....
};
listview.itemsRemoved += e =>
{
removed_idx = e.First();
};