X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/112ac1d33aa8f9b7f3d2f9542d15431f152b1d35..88d2b3c2cc2f95bd7a03494f83cb56deaa07e944:/gtk/gtkobject.lisp diff --git a/gtk/gtkobject.lisp b/gtk/gtkobject.lisp index 68c2db9..ef4bd03 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.28 2006-02-03 12:47:00 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) (proxy-location object)) (%object-sink object)) (defbinding %object-sink () nil