also defer doLayout() after undo/redo