diff -uNr gnome-python-1.0.51.orig/pygtk/libglade.py gnome-python-1.0.51/pygtk/libglade.py
--- gnome-python-1.0.51.orig/pygtk/libglade.py	Thu Sep 30 04:47:17 1999
+++ gnome-python-1.0.51/pygtk/libglade.py	Thu Mar  2 14:31:11 2000
@@ -39,7 +39,7 @@
 		for key, value in dict.items():
 			if type(value) == type(()) and len(value) >= 2:
 				hdict[key] = (self.__cnv(value[0]).__call__,
-					      value[1])
+					      value[1:])
 			else:
 				hdict[key] = self.__cnv(value).__call__
 		_libglade.glade_xml_signal_autoconnect(self._o, hdict)
diff -uNr gnome-python-1.0.51.orig/pygtk/libglademodule.c gnome-python-1.0.51/pygtk/libglademodule.c
--- gnome-python-1.0.51.orig/pygtk/libglademodule.c	Sat Jan 22 10:36:17 2000
+++ gnome-python-1.0.51/pygtk/libglademodule.c	Sat Mar  4 14:12:23 2000
@@ -57,28 +57,34 @@
 			 gpointer user_data) {
     PyObject *handler_dict = user_data;
     PyObject *callback;
+    PyObject *func, *extra;
 
     callback = PyDict_GetItemString(handler_dict, (gchar *)handler_name);
     if (!callback) {
 	PyErr_Clear();
 	return;
     }
-    if (!PyCallable_Check(callback))
+
+    if (PyTuple_Check(callback))
+	func = PyTuple_GetItem(callback, 0);
+    else
+	func = callback;
+    if (!PyCallable_Check(func))
 	return;
 
+    if (func != callback) {
+	extra = PyTuple_GetItem(callback, 1);
+	Py_INCREF(extra);
+    } else
+	extra = PyTuple_New(0);
+
     if (connect_object) {
-	PyObject *func, *extra, *other;
+	PyObject *other;
 
 	other = PyGtk_New(connect_object);
-	if (PyTuple_Check(callback)) {
-	    func = PyTuple_GetItem(callback, 0);
-	    extra = PyTuple_GetItem(callback, 1);
-	    callback = Py_BuildValue("(OON)", func, extra, other);
-	} else {
-	    callback = Py_BuildValue("(O()N)", callback, other);
-	}
+	callback = Py_BuildValue("(ONN)", func, extra, other);
     } else
-	Py_INCREF(callback);
+	callback = Py_BuildValue("(ON)", func, extra);
 
     gtk_signal_connect_full(obj, signal_name, NULL,
 			    (GtkCallbackMarshal)PyGtk_CallbackMarshal,
