[mcclim-cvs] CVS mcclim/Apps/Listener

ahefner ahefner at common-lisp.net
Mon Dec 31 23:34:53 UTC 2007


Update of /project/mcclim/cvsroot/mcclim/Apps/Listener
In directory clnet:/tmp/cvs-serv21458

Modified Files:
	listener.lisp 
Log Message:
Call disown-frame, so that the window doesn't linger after it is supposed
to have closed. This is necessary because run-listener passes a 
:frame-manager argument to make-application-frame, which causes adoption
to occur there rather than run-frame-top-level, and the logic in
run-frame-top-level wants to revert the frame to the state it was in
upon entering, which is adopted and disabled, rather than disowned.
That is, if the frame was adopted before entering run-frame-top-level
(and in this instance, the spec requires that make-application-frame do
so), it unreasonable to expect run-frame-top-level to disown it,
implying we must do it ourself.



--- /project/mcclim/cvsroot/mcclim/Apps/Listener/listener.lisp	2007/12/13 07:57:15	1.36
+++ /project/mcclim/cvsroot/mcclim/Apps/Listener/listener.lisp	2007/12/31 23:34:53	1.37
@@ -158,13 +158,14 @@
                           port
                           frame-manager
                           (process-name "Listener"))  
-  (let* ((fm (or frame-manager
-                 (find-frame-manager :port (or port (find-port)))))
+  (let* ((fm (or frame-manager (find-frame-manager :port (or port (find-port)))))
          (frame (make-application-frame 'listener
                                        :frame-manager fm
                                        :width width
                                        :height height)))
-    (flet ((run () (run-frame-top-level frame)))
+    (flet ((run () 
+             (unwind-protect (run-frame-top-level frame)
+               (disown-frame fm frame))))
       (if new-process
           (values (clim-sys:make-process #'run :name process-name)
                   frame)




More information about the Mcclim-cvs mailing list