added guards to protect against state corruption

if open or close fired off multiple times during transitions it was
corrupting the menu state.  This is now guarded against and ensured that
transitory states are always transitory.