% % A HyperNeWS Menu % % NOTE: altough ClassMenuCanvas is a subclass of ClassTrackingCanvas it % does NOT use any of the tracking functionality. It could also be a subclass % of ClassCanvas. % ClassMenu pop % load ClassMenu /ClassMenuCanvas ClassTrackingCanvas [] classbegin /menuprocess null def /Menuable? true def /onmenu nullproc def /MenuStart { % posname event -- posname event menu? boolean { currentprocess /ProcessName (HyperNeWS menu handler) put currentprocess /track_evt 3 -1 roll put currentprocess /menuok true put clear {onmenu} stopped pop currentprocess /menuok undef currentprocess /track_evt undef } fork { pause dup /State get dup /breakpoint eq { pop /menuprocess 1 index promote 3 -1 roll pop dup /menuposname get 3 1 roll /menumenu get true exit } if /runnable ne {pop false exit} if } loop } def /MenuStop { % menu -- pop menuprocess null ne { menuprocess /State get /breakpoint eq { menuprocess continueprocess } if /menuprocess unpromote } if } def classend def