[cells-gtk-cvs] CVS update: root/cells-gtk/widgets.lisp
Peter Denno
pdenno at common-lisp.net
Sat Feb 26 22:31:42 UTC 2005
Update of /project/cells-gtk/cvsroot/root/cells-gtk
In directory common-lisp.net:/tmp/cvs-serv8345/cells-gtk
Modified Files:
widgets.lisp
Log Message:
Make gtk-object-forget recursive.
Date: Sat Feb 26 23:31:41 2005
Author: pdenno
Index: root/cells-gtk/widgets.lisp
diff -u root/cells-gtk/widgets.lisp:1.10 root/cells-gtk/widgets.lisp:1.11
--- root/cells-gtk/widgets.lisp:1.10 Wed Feb 16 23:24:07 2005
+++ root/cells-gtk/widgets.lisp Sat Feb 26 23:31:41 2005
@@ -65,18 +65,11 @@
"gtk-object-store id ~a already known as ~a, not ~a"
hash-id known gtk-object)))))
-(defun gtk-object-forget (gtk-id gtk-object &aux (hash-id (pointer-address gtk-id)))
- (assert *gtk-objects*)
- (let ((known (gethash hash-id *gtk-objects*)))
- (cond
- ((not known))
- ((eql known gtk-object)
- (setf (gethash hash-id *gtk-objects*) nil))
- (t
- (gtk-report-error gtk-object-id-error
- "gtk-object-store id ~a known as ~a, not forgettable ~a"
- hash-id known gtk-object)))))
-
+(defun gtk-object-forget (gtk-id gtk-object)
+ (when gtk-id
+ (assert *gtk-objects*)
+ (remhash (pointer-address gtk-id) *gtk-objects*)
+ (mapc #'(lambda (k) (gtk-object-forget (id k) k)) (kids gtk-object))))
(defun gtk-object-find (gtk-id &optional must-find-p &aux (hash-id (pointer-address gtk-id)))
(when *gtk-objects*
@@ -117,7 +110,7 @@
(intern (format nil "GTK-~a~{-~a~}" class slot-access) :gtk-ffi))))
;;; --- widget --------------------
-
+;;; Define handlers that recover the the callback defined on the widget
(defmacro def-gtk-event-handler (event)
`(ff-defun-callable :cdecl :int ,(intern (string-upcase (format nil "~a-handler" event)))
((widget :pointer-void) (event :pointer-void) (data :pointer-void))
@@ -381,6 +374,7 @@
(def-c-output .kids ((self window))
(assert-bin self)
(dolist (kid new-value)
+ (when *gtk-debug* (format t "~% window ~A has kid ~A" self kid))
(when *gtk-debug* (trc nil "WINDOW ADD KID" (md-name self) (md-name kid)) (force-output))
(gtk-container-add (id self) (id kid)))
#+clisp (call-next-method))
More information about the Cells-gtk-cvs
mailing list