CLIM mail archive
[Prev][Next][Index][Thread]
Weird top-level accept symptom
Date: Wed, 12 Feb 1992 09:05 EST
From: Curt Eggemeyer <curt@eraserhead.jpl.nasa.gov>
As per my earlier message. (I'm on a Sun using Clim 1.0 in Allegro CL)
In my application frame I somethings get caught in a weird recursive
type accept problem. It seems that somehow the top-level accept loop in
the application frame sometimes starts in a deeper recursive call on
accept when you enter top level commands for the application. It shows
up after some commands have already been entered and executed on the
application and at some point you hit the debugger (so you can either
pop or abort out).
Afterwards when I try and type in another application command as you
type in the characters (including trying to do completion via the space
bar) the cursor all of a sudden moves to another line in my interactor
pane and continues to echo out the characters of the command. Only the
accept now thinks that those characters entered on the new line are the
beginning of a new command (from this point on the top-level accept loop
in the application frame is screwed for keyboard input). So, if I try
and rubout those characters I randomly get beeped and it ignores the
rubout. However, if I do positioning of the cursor ala control
characters the cursor sometimes jumps up to the original line and starts
editing on that character string. From that point on the cursor
randomly jumps back and forth between the two lines and never lets me
successfully remove all of the characters in both lines.
If I abort out of entering the command, from that point on the top-level
accept will continually fail to accept my commands via the keyboard.
Menu commands are still available and will echo correctly in the
interactor pane, but any keying in of commands will now fail as
described above. The only way for me to recover is to blow out the
application frame and re-instantiate a whole new one.
Another weird symptom is sometimes my interactor pane will lose the
ability to echo characters out (including the command prompt) (I think
the ink has somehow been flipped because I notice the cursor moving).
It sounds to me like you might have executed some presentation action
(not a translator, an action) that is going back to the application's
command loop. If this is the case, the action is in error; actions
should never terminate input.
Here's something I found. Does anybody have the same problem if they do
the following?
;--------------------------------------------------------------------------
We'll I findly was able to find a way to reproduce the same symptom. If
you are in X you can have fun blowing CLIM's command accept in your
application frame by the following method.
From the LISP listener invoke your application from a
process-run-function, after you have instantiated it into some global,
lets say *my-application*.
Now start the application like so;
(process-run-function (list :name "My application") 'run-frame-top-level
*my-application*)
Okay, your application is up on the display. Now go to the title bar
for that application and bring up the x-menu and select "Close" from it.
This will now close the application display into an icon. Go back into
the lisp listener and reinvoke the same process-run-function form. At
this point any attempt at invoking application commands in the top-level
accept will exhibit the same symptoms I have indicated above. I think I
only hit these problems after I hit the debugger, while I am working in
some of my application commands. Apparently, there is a random chance
that when you pop or abort out of the debugger while in your application
you can screw your application command's top-level accept. The only
recourse is to kill that application and resinstantiate a new one. Gee,
if only there was a function in which you can totally flush out the
top-level accept in your application when it loses its input buffer
positioning.
If you can get into a debugger, CLIM does establish a restart handler
that reinvokes the application from the top.
Also, the so-called CLIM 1.1 (which a number of companies are about to
release) will contain some improvements to the CLX port w.r.t. its
interactions with screen managers. This should fix some other problems.
References:
Main Index |
Thread Index