conrad@jupiter.ucsc.edu (Al Conrad, x2370) (04/07/89)
The following code demonstrates some kind of race condition that
comes up when you use getanimated after typing text into a text
item. Just psh the following, type some text into the text box,
click OK, and then get a rubber band line. You'll notice that
after the first rubber band line click the line disappears every
time you stop moving the cursor. Somewhere, somebody is doing
an erasepage in the overlay canvas, but commenting out the
erasepage in litetext.ps doesn't help?!
----------------------------------------------------------------
systemdict /Item known not { (NeWS/liteitem.ps) run } if
/overlay framebuffer createoverlay def
/PromptBox {
/CANCELResponce {
can /Mapped false put %get rid of canvas
p killprocess %kill dialog process
} def
/OKResponce {
/getvalue items /responce get send
can /Mapped false put %get rid of canvas
p killprocess %kill dialog process
} def
%create canvass for the dialog box
/itembackground .75 def
/can framebuffer 240 150 createcanvas def
can setcanvas 400 100 movecanvas currentcanvas mapcanvas
itembackground fillcanvas 0 strokecanvas
/items 10 dict dup begin
%items is the dictionary of liteitems that make up the dialog
/CancelButton
(CANCEL) /CANCELResponce can 100 0 /new ButtonItem send def
130 30 /move CancelButton send
/OKButton
(OK) /OKResponce can 100 0 /new ButtonItem send def
10 30 /move OKButton send
/responce (>) () /Right {} can 220 0
/new TextItem send
10 100 /move 3 index send def
end def
items paintitems
/p items forkitems def
p
} def
PromptBox waitprocess
overlay setcanvas
0 0 {} getanimated
waitprocess aload pop % wait for first click
{ lineto } getanimated
waitprocess aload pop % wait for second click