better GUI widget state update handling