Drag.Exited editor event confusion

I am trying to drag some game objects from the hierarchy window and drop them inside a rectangle field and automatically add them to a list. So my problem lies when trying to resize the SerializedProperty List which resides inside the inspected object, within the editor events. When trying to do a simple resize over the SerializedProperty “m_objectsList” like so:

    serializedObject.Update();

    if (current.type == EventType.DragExited)
    {
       Debug.Log("Drag Exited"); // Does get called.
       m_objectsList.arraySize++; // Does not resize.
       current.Use();
    }

    serializedObject.ApplyModifiedProperties();

the list does not expand. However when i switch the event for instance with MouseUp the array expands as expected.

   serializedObject.Update();

   if (current.type == EventType.MouseUp)
   {
      m_objectsList.arraySize++; // Resizes as expected
      current.Use();
   }

   serializedObject.ApplyModifiedProperties();

So even that the DragExited event get’s performed it does not want to apply the modified properties? What is that i am missing and not understanding correctly.

So i will write what i did if somebody else ever needs this. It seems that for some reason when trying to perform some action over a SerializedProperty inside the if (current.type == EventType.DragExited) brackets, when dragging from the hierachy window to some inspector item, does not apply the modified properties of the serialized object. As i though what can i simply do, i came up with a bool flag to check when the drag exits and just do my logic inside the EventType.Repaint:

private bool m_dragExited;

public override void OnInspectorGUI()
{

serializedObject.Update();

if (current.type == EventType.DragExited)
{
   if (position.Contains(m_mousePosition))
   {
      m_dragExited = true;
   }
}

if (current.type == EventType.Repaint && m_dragExited == true)
{
  // Perform whatever action needs to be done when the drag exits
  m_dragExited = false;
}

serializedObject.ApplyModifiedProperties();
}

Very old thread but I wanted to answer it since I have been pulling my hair with this problem for a good day.

DragExited is meant to be used for when a drag is canceled (like when the user presses escape when dragging) so in a sense, it really should’ve been called DragCancelled instead, and to add insult to injury, if you were to use the DragExited event type then shortly afterward a very mean & silent undo operation will be invoked to undo all of the changes you made, so it will make it seem as if the changes are applied but then they disappear three frames later …

DragPerform is what gets called when the drag is “performed” which any reasonable person would assume to be when an object is first dragged, but you see it’s actually called when the drag operation is completed, so you’ll need to use that instead.
Thank you for wasting a day of my life Unity, hopefully, this information saves someone else from wasting their time as well.