X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/55212af123daea1d86d31da21cc1bee77651fb81..d905d6efa34d58c8ba9659b33bd0ed9ae84e7f79:/gtk/gtkobject.lisp diff --git a/gtk/gtkobject.lisp b/gtk/gtkobject.lisp index 821fa04..09e1746 100644 --- a/gtk/gtkobject.lisp +++ b/gtk/gtkobject.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtkobject.lisp,v 1.27 2005/04/23 16:48:52 espen Exp $ +;; $Id: gtkobject.lisp,v 1.30 2006/02/08 21:57:26 espen Exp $ (in-package "GTK") @@ -52,13 +52,15 @@ (defclass %object (gobject) (defmethod initialize-instance ((object %object) &rest initargs &key signal) (declare (ignore signal)) (call-next-method) - (reference-foreign (class-of object) (proxy-location object)) (dolist (signal-definition (get-all initargs :signal)) (apply #'signal-connect object signal-definition))) (defmethod initialize-instance :around ((object %object) &rest initargs) (declare (ignore initargs)) (call-next-method) + ;; Add a temorary reference which will be removed when the object is + ;; sinked + (reference-foreign (class-of object) (foreign-location object)) (%object-sink object)) (defbinding %object-sink () nil @@ -126,6 +128,8 @@ (defmethod compute-effective-slot-definition-initargs ((class child-class) direc (if (eq (most-specific-slot-value direct-slotds 'allocation) :property) (nconc (list :pname (most-specific-slot-value direct-slotds 'pname)) + ;; Need this to prevent type type expansion in SBCL (>= 0.9.8) + (list :type (most-specific-slot-value direct-slotds 'type)) (call-next-method)) (call-next-method)))