The interface of Polyphone is made of several fields (text boxes, cells, ...) and the global undo / redo is updated every time a data changed in the soundfont. This change occurs during the validation of the field which is during the "unfocus" event as you described.
Here is what could be implemented:
- when we start editing a field (text box or a cell in a table) the save button is enabled,
- when we use the save button, the focus is removed so that every changes are taken into account.
Local undo / redo will however remain for the text boxes.