Index: atk.override
===================================================================
--- atk.override	(revision 2822)
+++ atk.override	(working copy)
@@ -39,7 +39,6 @@
 ignore
   atk_text_free_ranges
   AtkObjectFactory__do_create_accessible
-  AtkObjectFactory__proxy_do_create_accessible
   AtkUtil__do_add_global_event_listener
   AtkUtil__proxy_do_add_global_event_listener
   AtkUtil__do_remove_global_event_listener
@@ -52,6 +51,91 @@
 ignore-glob
   *_get_type
 %%
+override AtkObjectFactory__proxy_do_get_accessible_type noargs
+static GType
+_wrap_AtkObjectFactory__proxy_do_get_accessible_type(void)
+{
+    // can't do anything here until bug #377382 is fixed
+    return NULL;
+}
+%%
+override AtkObjectFactory__proxy_do_create_accessible kwargs
+static AtkObject*
+_wrap_AtkObjectFactory__proxy_do_create_accessible(GObject *obj)
+{
+    PyGILState_STATE __py_state;
+    GType obj_type;
+    AtkObjectFactory *self;
+    AtkRegistry *def_reg;
+    PyObject *py_self;
+    AtkObject* retval;
+    PyObject *py_args;
+    PyObject *py_retval;
+    PyObject *py_method;
+    PyObject *py_obj;
+    
+    __py_state = pyg_gil_state_ensure();
+    // get the object type
+    obj_type = G_TYPE_FROM_INSTANCE(obj); //pyg_type_from_object(obj);
+    // use the default registry to find the factory
+    def_reg = atk_get_default_registry();
+    self = atk_registry_get_factory(def_reg, obj_type);
+
+    // proceed as usual
+    py_self = pygobject_new((GObject *) self);
+    if (!py_self) {
+        if (PyErr_Occurred())
+            PyErr_Print();
+        pyg_gil_state_release(__py_state);
+        return NULL;
+    }
+    
+    py_method = PyObject_GetAttrString(py_self, "do_create_accessible");
+    if (!py_method) {
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_DECREF(py_self);
+        pyg_gil_state_release(__py_state);
+        return NULL;
+    }
+
+    // pass PyGObject as param
+    py_obj = pygobject_new(obj);
+    py_args = PyTuple_New(1);
+    PyTuple_SET_ITEM(py_args, 0, py_obj);
+
+    py_retval = PyObject_CallObject(py_method, py_args);
+    if (!py_retval) {
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_DECREF(py_args);
+        Py_DECREF(py_method);
+        Py_DECREF(py_self);
+        pyg_gil_state_release(__py_state);
+        return NULL;
+    }
+    if (!PyObject_TypeCheck(py_retval, &PyGObject_Type)) {
+        PyErr_SetString(PyExc_TypeError, "retval should be a GObject");
+        PyErr_Print();
+        Py_DECREF(py_args);
+        Py_DECREF(py_retval);
+        Py_DECREF(py_method);
+        Py_DECREF(py_self);
+        pyg_gil_state_release(__py_state);
+        return NULL;
+    }
+    retval = (AtkObject*) pygobject_get(py_retval);
+    g_object_ref((GObject *) retval);
+    
+    Py_DECREF(py_args);
+    Py_DECREF(py_retval);
+    Py_DECREF(py_method);
+    Py_DECREF(py_self);
+    pyg_gil_state_release(__py_state);
+    
+    return retval;
+}
+%%
 override atk_relation_new kwargs
 static int
 _wrap_atk_relation_new (PyGObject *self, PyObject *args, PyObject *kwargs)
