Index: gtk/gtkentry.c
===================================================================
--- gtk/gtkentry.c	（版本 19908）
+++ gtk/gtkentry.c	（工作副本）
@@ -6203,6 +6203,8 @@
                           GtkEntryCompletion *completion)
 {
   GtkEntryCompletion *old;
+  GtkWidget *tree_view;
+  AtkObject *atk_parent, *atk_child;
 
   g_return_if_fail (GTK_IS_ENTRY (entry));
   g_return_if_fail (!completion || GTK_IS_ENTRY_COMPLETION (completion));
@@ -6241,6 +6243,14 @@
   connect_completion_signals (entry, completion);    
   completion->priv->entry = GTK_WIDGET (entry);
   g_object_set_data (G_OBJECT (entry), I_(GTK_ENTRY_COMPLETION_KEY), completion);
+
+  atk_parent = gtk_widget_get_accessible (GTK_WIDGET (entry));
+  tree_view = gtk_entry_completion_get_tree_view (completion);
+  atk_child = gtk_widget_get_accessible (tree_view);
+  g_signal_emit_by_name (atk_parent, "children_changed::add",
+                         0, atk_child, NULL);
+  g_object_notify (G_OBJECT (atk_child), "accessible_parent");
+  atk_object_set_parent (atk_child, atk_parent);
 }
 
 /**
Index: gtk/gtkentrycompletion.c
===================================================================
--- gtk/gtkentrycompletion.c	（版本 19908）
+++ gtk/gtkentrycompletion.c	（工作副本）
@@ -978,6 +978,14 @@
   return completion;
 }
 
+GtkWidget *
+gtk_entry_completion_get_tree_view (GtkEntryCompletion *completion)
+{
+  g_return_val_if_fail (GTK_IS_ENTRY_COMPLETION (completion), NULL);
+
+  return GTK_WIDGET (completion->priv->tree_view);
+}
+
 /**
  * gtk_entry_completion_get_entry:
  * @completion: A #GtkEntryCompletion.
Index: gtk/gtkentrycompletion.h
===================================================================
--- gtk/gtkentrycompletion.h	（版本 19908）
+++ gtk/gtkentrycompletion.h	（工作副本）
@@ -78,6 +78,8 @@
 GType               gtk_entry_completion_get_type               (void) G_GNUC_CONST;
 GtkEntryCompletion *gtk_entry_completion_new                    (void);
 
+GtkWidget          *gtk_entry_completion_get_tree_view          (GtkEntryCompletion          *completion);
+
 GtkWidget          *gtk_entry_completion_get_entry              (GtkEntryCompletion          *completion);
 
 void                gtk_entry_completion_set_model              (GtkEntryCompletion          *completion,
Index: modules/other/gail/gailentry.c
===================================================================
--- modules/other/gail/gailentry.c	（版本 19908）
+++ modules/other/gail/gailentry.c	（工作副本）
@@ -42,6 +42,9 @@
 /* atkobject.h */
 
 static AtkStateSet* gail_entry_ref_state_set       (AtkObject            *accessible);
+static gint         gail_entry_get_n_children  (AtkObject            *accessible);
+static AtkObject*   gail_entry_ref_child       (AtkObject            *accessible,
+                                                    gint                 i);
 
 /* atktext.h */
 
@@ -187,6 +190,8 @@
   class->ref_state_set = gail_entry_ref_state_set;
   class->get_index_in_parent = gail_entry_get_index_in_parent;
   class->initialize = gail_entry_real_initialize;
+  class->get_n_children = gail_entry_get_n_children;
+  class->ref_child =  gail_entry_ref_child;
 
   widget_class->notify_gtk = gail_entry_real_notify_gtk;
 }
@@ -389,6 +394,46 @@
   return state_set;
 }
 
+static gint
+gail_entry_get_n_children (AtkObject *accessible)
+{
+  GtkWidget *widget;
+  GtkEntry *entry;
+
+  widget = GTK_ACCESSIBLE (accessible)->widget;
+  if (widget == NULL)
+    return 0;
+
+  entry = GTK_ENTRY (widget);
+  if (gtk_entry_get_completion (entry))
+    return 1;
+  else
+    return 0;  
+}
+
+static AtkObject*
+gail_entry_ref_child (AtkObject *accessible, gint i)
+{
+  GtkWidget *widget, *tree_view;
+  GtkEntry *entry;
+  GtkEntryCompletion *completion;
+  AtkObject *obj;
+
+  g_return_val_if_fail ((i == 0), NULL);
+
+  widget = GTK_ACCESSIBLE (accessible)->widget;
+  if (widget == NULL)
+    return NULL;
+
+  entry = GTK_ENTRY (widget);
+  completion = gtk_entry_get_completion (entry);
+  tree_view = gtk_entry_completion_get_tree_view (completion);
+  obj = gtk_widget_get_accessible (tree_view);
+  g_object_ref (obj);
+
+  return obj;
+}
+
 /* atktext.h */
 
 static void
