+(defun gtk-widget-get-callback (widget plist instance)
+ (let ((cb (plist-get plist :callback))
+ (ex (plist-get plist :callback-ex))
+ (real-cb nil))
+ (cond
+ (ex
+ (gtk-signal-connect widget 'button-release-event
+ (lambda (widget event data)
+ (put widget 'last-event event)))
+ `(lambda (widget &rest ignored)
+ (funcall ,ex ,instance (get widget 'last-event))))
+ (cb
+ `(lambda (widget &rest ignored)
+ (if (functionp ,real-cb)
+ (funcall ,real-cb)
+ (eval ,real-cb))))
+ (t
+ nil))))
+
+(defun gtk-widget-instantiate-button-internal (plist instance)