Not sure what happened. My initial guess is that pclose calls an async function to close the window and return immediately. The form will be closed after some other events. Conversely if form had been destroyed within the button event, its children could no longer exist, what would happen to the process of code running by the button b1? On Dec 19, 2015 8:42 AM, "robert therriault" <[email protected]> wrote:
> Henry, > > The other place that I have seen something like this is when running labs > such as Arithmetic in the Live texts section. It happens in the very first > section of that lab. Also occurs in Book of Numbers, Grade 8-7 Saxon and > Linear Algebra (and perhaps labs in other categories). > > It may not be related but it also strikes me as odd that the forms remain > open on wdforms '' after they have been closed. A script to illustrate > follows. > > Cheers, bob > > BETA=: 0 : 0 > pc betavis ptop;setp wh 200 60; > maxwh 200 20;cc b1 button;cn "close form"; > pshow; > ) > > betavis_b1_button=: 3 : 0 > smoutput (wdforms '');'3';'Form open' > betavis_close '' > smoutput (wdforms '');'4';'Expected form closed but still open' > status '' > ) > > status=: 3 : 0 > smoutput (wdforms '');'5'; 'Expected form closed but still open' > ) > > betavis_close=: 3 : 'wd ''psel betavis;pclose;''' > > betavis_run=: 3 : 0 > smoutput (wdforms '');'1' ;'No form' > wd BETA > smoutput (wdforms '');'2';'Form created' > ) > > betavis_run '' > > > > On Dec 18, 2015, at 2:53 PM, Henry Rich <[email protected]> wrote: > > > > So far the only problem is that sometimes the last line of the term > window (where the next command will be entered) is misplaced. > > > > It is easy to create the error using dissect. I haven't been able to > create it with a simpler testcase, so maybe it has something to do with the > fact that a form is drawn. dissect itself does no typeout and just draws a > form and produces a result. > > > > 1. Run > > > > dissect '3 + 5' > > > > This works correctly. Dissect returns with i. 0 0, so there is no > typeout and the term window is ready for the next command. The form is > created. > > > > 2. Run > > > > 2 dissect '3 + 5' > > > > The left argument to dissect instructs dissect to return the locale of > the form. The result of dissect is now an atom, with empty shape. Observe > that there is a blank line between the line you typed in and the result of > dissect, and that the last line, where the next command will be entered, > has boxing characters. It appears that the next-command line was output > before the result of dissect. > > > > 3. Run > > > > 3 : 'i. 0 [ destroy__y $0' 2 dissect '3 + 5' > > > > This creates the form and immediately destroys it. The result should be > a blank line. As in case 2 above the new prompt seems to come out before > the blank line, so that the cursor is lacking the customary 3 spaces. > > > > 4. Run > > > > 3 : 'i. 0 0 [ destroy__y $0' 2 dissect '3 + 5' > > > > Now there is no blank line emitted by the command line, and the display > is correct. > > > > Finally, configure a function key to run dissect. I use > > > > F2;0;Dissect Line;dissect&.finddissectline_dissect_ 0 > > > > Type > > > > 3 + 5 > > > > then place the cursor on the 3+5 line and press F2. Note that a blank > line is added to the term window, even though the PFkey is configured not > to display. > > > > Henry Rich > > > > > > > > > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
