The possibility to preserve the customizations in progress is already
present in the customize machinery, but for some reason it wasn't used
in this case.

I propose a patch that makes use of the :shown-value property of the
custom-variable and custom-face widgets, thus allowing to preserve the
customizations in progress when redrawing a widget.

Since after redrawing customize recomputes the state of the widget, it
is necessary to check if the widget was modified.  That isn't
possible with `custom-variable-state' or `custom-face-state',
because they are pretty "widget unaware".  So I added a check in
`custom-variable-state-set' and `custom-face-state-set' to catch this
situation.

Finally, to be able to use the value of the widget in
`custom-face-state-set', it is necessary to rearrange the final part of
`custom-face-value-create'.  Namely, add the children to the :children
property, before calling `custom-face-state-set'.

Best regards,
Mauro.