Index: /trunk/source/cocoa-ide/cocoa-listener.lisp
===================================================================
--- /trunk/source/cocoa-ide/cocoa-listener.lisp	(revision 15254)
+++ /trunk/source/cocoa-ide/cocoa-listener.lisp	(revision 15255)
@@ -427,5 +427,12 @@
   nil)
 
-
+(defun listener-window-count ()
+  (let ((count 0)
+        (all-windows (#/windows *NSApp*)))
+    (dotimes (i (#/count all-windows) count)
+      (let* ((w (#/objectAtIndex: all-windows i))
+             (wc (#/windowController w)))
+        (when (typep wc 'hemlock-listener-window-controller)
+          (incf count))))))
 
 (objc:defmethod #/init ((self hemlock-listener-document))
@@ -443,5 +450,5 @@
     doc))
 
-(def-cocoa-default *initial-listener-x-pos* :float -100.0f0 "X position of upper-left corner of initial listener")
+(def-cocoa-default *initial-listener-x-pos* :float 100.0f0 "X position of upper-left corner of initial listener")
 
 (def-cocoa-default *initial-listener-y-pos* :float 100.0f0 "Y position of upper-left corner of initial listener")
@@ -451,7 +458,8 @@
 
 (objc:defmethod (#/dealloc :void) ((self hemlock-listener-document))
-  (if (zerop (decf *cocoa-listener-count*))
+  (when (zerop (listener-window-count))
     (setq *next-listener-x-pos* nil
-          *next-listener-y-pos* nil))
+          *next-listener-y-pos* nil
+          *cocoa-listener-count* 0))
   (let* ((p (hemlock-document-process self)))
     (when p
