(probably) fix the error in refcount
[cl-gtk2.git] / glib / gobject.generating.lisp
index a7c9121..bad13b2 100644 (file)
                                  (&rest properties))
   (setf properties (mapcar #'parse-property properties))
   (let* ((superclass-properties (get superclass 'properties))
-         (combined-properties (append superclass-properties properties)))
+         (interface-properties (map-append (lambda (iface-name)
+                                             (get (gethash iface-name *known-interfaces*) 'properties))
+                                           interfaces))
+         (combined-properties (append superclass-properties properties interface-properties)))
     `(progn
        (defclass ,name (,superclass ,@(mapcar #'interface->lisp-class-name interfaces)) ())
        (register-object-type ,g-type-name ',name)
             append (property->accessors name property export))
        
        (eval-when (:compile-toplevel :load-toplevel :execute)
+         (register-object-type ,g-type-name ',name)
          (setf (get ',name 'superclass) ',superclass
                (get ',name 'properties) ',combined-properties)))))
 
          (:export t
                   ,@(when (foreign-symbol-pointer probable-type-initializer)
                           `(:type-initializer ,probable-type-initializer)))
-       ,@(mapcar (lambda (property)
-                   (property->property-definition name property))
-                 properties))))
+       ,@(append (mapcar (lambda (property)
+                           (property->property-definition name property))
+                         properties)
+                 (cdr (find g-name *additional-properties* :key 'car :test 'string=))))))
 
 (defun get-g-class-definitions-for-root-1 (type)
   (unless (member (ensure-g-type type) *generation-exclusions* :test '=)