CLIM mail archive


No Subject

I need to figure out how to abort the currently-running input-process of a
frame from outside the frame.

For example, assume that I have two frames, call them EDITOR-1 and
EDITOR-2.  Each editor works independently, however each editor can "call"
the other --i.e. EDITOR-1 can tell EDITOR-2 to start editing OBJECT-X (and
vice versa).

Now, for simplicity, assume that at any time either editor can be in one of
three input-states:
 1] Resting/"Wait for input"
 2] Waiting for CLIM-like type-in (e.g. in the middle of an ACCEPT.)
 3] In some other, possibly MOTIF-like modal state --for example with a
    menu or a dialog box popped-up.

Case #1 is uninteresting, but suppose EDITOR-1 is in one of the other
"wait" states and EDITOR-2 sends it a EDIT-OBJECT message.  At this point I
would like to be able to abort out of _whatever_ EDITOR-1 is doing and
proceed with the new editing task (again, for simplicity, let's assume that
EDITOR-1 is always in a state where it can be "reasonably" interrupted).

So my questions:

  I] Is there some way that I can force EDITOR-1 to abort out of whatever
state it is in?  It is OK if it blows all the way out to the outer command-
loop --provided first, that I can do it functionally from the outside and
second, it works in all cases, whether CLIM-like (e.g. where the editor is
in the middle of an ACCEPT) or MOTIF-like (e.g. where the editor is waiting
for some dialog-box, like that of NOTIFY-USER).

 II] Is there some way I can functionally determine the wait-state of
EDITOR-1 from the outside (that is, that can I do in a global way that
doesn't involve, say, having set my own internal flag before I went into a
wait state)?

III] An alternative approach would be the following: before I put EDITOR-1
in a wait-state I notify EDITOR-2, at which time EDITOR-2 "locks-up",
rejecting all input, until EDITOR-1 is finished.  This is ugly, but
do-able.  So here my question is: Is there some way to cause EDITOR-2 to
(temporarily) reject _all_ input both CLIM-like (i.e. presentation-actions
or command accelerators) or MOTIF-like (e.g. from a menu-bar)?  Again it
would be nice for this to be done in a global way; i.e. in a way that
doesn't involve, say, having each individual command check a REJECT-P flag.

To preempt one line of attack, this can't be based on ACTIVITIES (in part
because the editor-frames have to be otherwise independent).

Any suggestions/comments?


Main Index | Thread Index