CLIM mail archive


Your suggestions on popup windows


(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.

Based on your earlier message I tried the following:

(let* ((top.sheet (frame-top-level-sheet application))
		     (open-window-stream :SAVE-UNDER T
					 D,#TD1PsT[Begin using 006 escapes](1 0 (NIL 0) (NIL :BOLD NIL) "CPTFONTCB");; 0:INPUT-BUFFER (stream-input-buffer top.sheet)
					 :PORT (port top.sheet) 
	       (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 thing).

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
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.

	Thanks for your previous suggestions.

		Land Fleming


Main Index | Thread Index