recalc recalculates spacer, always save width, fix #9 #8