Take :default-initargs into account when creating instances of gobject classes
authorDmitry Kalyanov <Kalyanov.Dmitry@gmail.com>
Sat, 29 Aug 2009 19:17:13 +0000 (23:17 +0400)
committerDmitry Kalyanov <Kalyanov.Dmitry@gmail.com>
Sat, 29 Aug 2009 19:18:24 +0000 (23:18 +0400)
glib/gobject.meta.lisp

index 086a5ac..7fba65e 100644 (file)
       (progn
         (assert (= (length initargs) 2) nil "POINTER can not be combined with other initargs (~A)" initargs)
         (call-next-method))
-      (let ((pointer (create-gobject-from-class-and-initargs class initargs)))
-        (apply #'call-next-method class :pointer pointer initargs))))
+      (let* ((default-initargs (iter (for (arg value) in (class-default-initargs class))
+                                     (nconcing (list arg value))))
+             (effective-initargs (append initargs default-initargs))
+             (pointer (create-gobject-from-class-and-initargs class effective-initargs)))
+        (apply #'call-next-method class :pointer pointer effective-initargs))))
 
 (defmethod slot-boundp-using-class ((class gobject-class) object (slot gobject-property-effective-slot-definition))
   (handler-case