[mcclim-cvs] CVS mcclim/Experimental

thenriksen thenriksen at common-lisp.net
Sun Jan 27 22:24:07 UTC 2008


Update of /project/mcclim/cvsroot/mcclim/Experimental
In directory clnet:/tmp/cvs-serv28193/Experimental

Modified Files:
	pointer-doc-hack.lisp 
Log Message:
Added some amazing hacks to pointer-documentation-panes for the notion of a "background message".

This is the beginning of extending pointer-documentation-panes into
more generally useful minibuffer-like panes.

For now, this just means that the Listener shows arglists and other
things for Drei commands. It's still a little flickery, though.


--- /project/mcclim/cvsroot/mcclim/Experimental/pointer-doc-hack.lisp	2006/03/29 10:43:44	1.2
+++ /project/mcclim/cvsroot/mcclim/Experimental/pointer-doc-hack.lisp	2008/01/27 22:24:07	1.3
@@ -218,41 +218,52 @@
     (let ((x (device-event-x event))
 	  (y (device-event-y event))
 	  (pstream *pointer-documentation-output*))
-      (loop for (button presentation translator context)
-	    in new-translators
-	    for name = (cadr (assoc button +button-documentation+))
-	    for first-one = t then nil
-	    do (progn
-		 (unless first-one
-		   (stream-increment-cursor-position pstream 12 0)
-		   #+nil(write-string "; " pstream))
-		 (unless (zerop current-modifier)
-		   (print-modifiers pstream current-modifier :short)
-		   (write-string "-" pstream))
+      (if (null new-translators)
+          (when (and (background-message pstream)
+                     (not (record-on-display pstream (background-message pstream))))
+            (cond ((> (get-universal-time)
+                      (+ (background-message-time pstream)
+                         *background-message-minimum-lifetime*))
+                   (setf (background-message pstream) nil))
+                  (t
+                   (setf (output-record-parent (background-message pstream)) nil)
+                   (stream-add-output-record pstream (background-message pstream))
+                   (replay (background-message pstream) pstream))))
+          (loop for (button presentation translator context)
+                in new-translators
+                for name = (cadr (assoc button +button-documentation+))
+                for first-one = t then nil
+                do (progn
+                     (unless first-one
+                       (stream-increment-cursor-position pstream 12 0)
+                       #+nil(write-string "; " pstream))
+                     (unless (zerop current-modifier)
+                       (print-modifiers pstream current-modifier :short)
+                       (write-string "-" pstream))
 
-		 ;; Hefner's pointer-documentation hack.
-		 (setf name (cond 
-			      ((eql button +pointer-left-button+)   *icon-mouse-left*)
-			      ((eql button +pointer-middle-button+) *icon-mouse-middle*)
-			      ((eql button +pointer-right-button+)  *icon-mouse-right*)
-			      (t name)))
-		 (if (not (typep name 'indexed-pattern))  (format pstream "~A: " name)
-		   (multiple-value-bind (x y)  (stream-cursor-position pstream)
-		     (draw-pattern* pstream name x y)
-		     (stream-increment-cursor-position pstream 24 0)))
-		   
-		 (document-presentation-translator translator
-						   presentation
-						   (input-context-type context)
-						   *application-frame*
-						   event
-						   stream
-						   x y
-						   :stream pstream
-						   :documentation-type
-						   :pointer))   )
-	    ;finally nil #+nil (when new-translators
-		;		(write-char #\. pstream)))
+                     ;; Hefner's pointer-documentation hack.
+                     (setf name (cond 
+                                  ((eql button +pointer-left-button+)   *icon-mouse-left*)
+                                  ((eql button +pointer-middle-button+) *icon-mouse-middle*)
+                                  ((eql button +pointer-right-button+)  *icon-mouse-right*)
+                                  (t name)))
+                     (if (not (typep name 'indexed-pattern))  (format pstream "~A: " name)
+                         (multiple-value-bind (x y)  (stream-cursor-position pstream)
+                           (draw-pattern* pstream name x y)
+                           (stream-increment-cursor-position pstream 24 0)))
+           	   
+                     (document-presentation-translator translator
+                                                       presentation
+                                                       (input-context-type context)
+                                                       *application-frame*
+                                                       event
+                                                       stream
+                                                       x y
+                                                       :stream pstream
+                                                       :documentation-type
+                                                       :pointer))   ))
+                                        ;finally nil #+nil (when new-translators
+                                        ;		(write-char #\. pstream)))
       ;; Wasteful to do this after doing
       ;; find-innermost-presentation-context above... look at doing this
       ;; first and then doing the innermost test.




More information about the Mcclim-cvs mailing list