CLIM mail archive


Your suggestions on popup windows

    Date: Wed, 6 Oct 1993 12:36 EDT
    From: (Land Fleming)

    (I am working on a Symbolics running Genera 8.3).


    I'm not sure what all the :PARENT keyword did in open-window-stream in
    CLIM 1.1, but one thing was to automatically size and position the
    window to be the same as the parent application pane when the size and
    position arguments were omitted in the function call.

Hmm, I didn't know CLIM 1.1 had this sizing/positioning behavior.  My
guess is that that behavior is accidental.  At least OPEN-WINDOW-STREAM
let you specify the size and position yourself...

    Based on your earlier message I tried the following:

    (let* ((top.sheet (frame-top-level-sheet application))
           (pallette (open-window-stream :SAVE-UNDER T
                                         :INPUT-BUFFER (stream-input-buffer top.sheet)
                                         :PORT (port top.sheet) 
                                         :RECORD T :SCROLL-BARS :BOTH)))
      (setf (sheet-event-queue pallette) (sheet-event-queue top.sheet))

    The window created in this way (the "pallette") still gets buried as
    soon as I click on a "real" application pane. It made no difference
    whether I used the :INPUT-BUFFER argument instead of or in addition to
    setting the sheet-event-queue of the window (these seem to be the same

I see.  OK, this is Genera's window manager screwing you.  You might be
able clobber the underlying window directly to get the Genera parent
relationship set up right.  I'll have to think about this.

    In CLIM 1.1, I used these popup windows for several reasons, but the
    purpose here was to provide a pallette (hence the name of the variable)
    of command presentations.  I used popup windows to save screen real
    estate.  There are several different pallettes that are stacked over
    the same (blank) application pane, and the user switches between
    pallettes by clicking on a command menu. The blank application pane was
    the :PARENT argument in CLIM 1.1, and the popup windows were
    automatically sized to cover it completely.
I see.  This is an unusual strategy, but it doesn't seem unreasonable.
As I said, this will require a bit of thought.

    Each presentation was a graphical depiction of an object class, and the
    associated command created an instance of the class depicted. The tricky
    part here is that part of the command sequence involves moving the
    mouse pointer over a real application pane, where the user indicates the
    position of a presentation for the new instance by clicking a mouse
    button again. A copy of the pallette's graphical depiction of the class
    is made at the point clicked on (we are talking CLIM 1.1 here, so the
    drawing functions are called; copying from a pixmap is one of the
    changes I want to make to take advantage of CLIM 2).

    The behavior of temp windows under CLIM 2 apparently won't support this
    kind of interaction. If you can think of any way to do it, I would still
    be interested. I think, however, I will just have to make the pallettes
    permanent panes in the application - either that, or give each popup
    pallette its own application pane. Implementing a command that involves
    user interaction with several different applications as well as
    different windows is a little complicated, although I believe it is
    doable. I know it involves detecting the frame the mouse pointer is
    currently in and setting the globals that are normally set by
    run-frame-top-level (*application-frame*, *standard-output*, etc.) to
    the appropriate values for the current frame.


Main Index | Thread Index