How to prevent a GUI element from changing until another is deselected?

So, I have a custom matrix inspector.

:

I want to use two integers property fields to represent the dimensions of the matrix, allowing you change the size of the matrix dynamically.

:

I already have all of this working, however if you type in a multi-digit number into either dimension, the matrix updates before you are done. What is the best way to approach this?

:

Basically, I want the matrix to only update it’s size once I either have deselected the field, or once I have pressed the enter key. Anything to make it an explicit decision by the person changing it.

:

I have attempted to mess around with EditorGUIUtility.hotControl, but I cannot seem to get the ControlID of the fields I want to use in the first place.

You probably look for the Delayed attribute which can be added to a serialized field. It will make the editor use a delayed editor that will update the value when you have finished editing it. That is when you press enter or if you unfocus the editor.

If you write a custom inspector and want to manually show such a field you can use EditorGUI.DelayedTextField / DelayedIntField / …