[Eclipse-cvs] CVS eclipse/lib

ihatchondo ihatchondo at common-lisp.net
Tue Nov 17 20:51:57 UTC 2009


Update of /project/eclipse/cvsroot/eclipse/lib
In directory cl-net:/tmp/cvs-serv5426/lib

Modified Files:
	manager-commons.lisp 
Log Message:
Fix: xlib:window-equal is the predicate when removing a window from a list window

--- /project/eclipse/cvsroot/eclipse/lib/manager-commons.lisp	2005/02/10 23:45:51	1.8
+++ /project/eclipse/cvsroot/eclipse/lib/manager-commons.lisp	2009/11/17 20:51:56	1.9
@@ -1,5 +1,5 @@
 ;;; -*- Mode: Lisp; Package: MANAGER-COMMONS -*-
-;;; $Id: manager-commons.lisp,v 1.8 2005/02/10 23:45:51 ihatchondo Exp $
+;;; $Id: manager-commons.lisp,v 1.9 2009/11/17 20:51:56 ihatchondo Exp $
 ;;;
 ;;; This is the CLX support for the managing with gnome.
 ;;;
@@ -254,23 +254,26 @@
    
    :reader-documentation (string): the reader function documentation string.
    :writer-documentation (string): the setf function documentation string."
-  (let ((reader (intern (with-standard-io-syntax (format nil "~A" name)))))
+  (let ((reader (intern (with-standard-io-syntax (format nil "~A" name))))
+        (seter (intern (with-standard-io-syntax (format nil "SET-~A" name)))))
     `(progn
-
        (defun ,reader (window &key window-list)
 	 ,@(when reader-documentation `(,reader-documentation))
 	 (get-window-property window ,property-atom window-list))
 
-       (defsetf ,reader (window &key (mode :replace) window-id) (win)
+       (defun ,seter (window value &key (mode :replace) window-id)
+         (unless (null value)
+           (change-property window ',property-atom
+               (cond ((eq mode :remove)
+                      (let ((prop (,reader window :window-list (not window-id)))
+                            (test (if window-id #'eql #'xlib:window-equal)))
+                        (remove value prop :test test)))
+                     ((listp value) value)
+                     (t (list value)))
+               ',data-type 32
+               :mode (if (eq mode :remove) :replace mode)
+               :transform (unless window-id #'xlib:window-id))))
+
+       (defsetf ,reader (window &key (mode :replace) window-id) (value)
 	 ,@(when writer-documentation `(,writer-documentation))
-	 `(when ,win
-	    (change-property ,window ,',property-atom
-	      (cond ((eq ,mode :remove)
-		     (remove ,win
-		         (,',reader ,window :window-list (not ,window-id))))
-		    ((listp ,win) ,win)
-		    (t (list ,win)))
-	      ,',data-type
-	      32
-	      :mode (if (eq ,mode :remove) :replace ,mode)
-	      :transform (unless ,window-id #'xlib:window-id)))))))
+         `(,',seter ,window ,value :mode ,mode :window-id ,window-id)))))





More information about the Eclipse-cvs mailing list