]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkentrycompletion.c
GtkWidget::draw() - Document how to get the dirty region
[~andy/gtk] / gtk / gtkentrycompletion.c
index 3e06c5feff2200d5a592c3a2f377425b917b67a6..e4968dfbda450a36d97f843504301eb1d4d43b0a 100644 (file)
@@ -656,8 +656,7 @@ gtk_entry_completion_set_property (GObject      *object,
         break;
 
       case PROP_TEXT_COLUMN:
-       gtk_entry_completion_set_text_column (completion,
-                                             g_value_get_int (value));
+        priv->text_column = g_value_get_int (value);
         break;
 
       case PROP_INLINE_COMPLETION:
@@ -1584,8 +1583,8 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
   return above;
 }
 
-void
-_gtk_entry_completion_popup (GtkEntryCompletion *completion)
+static void
+gtk_entry_completion_popup (GtkEntryCompletion *completion)
 {
   GtkTreeViewColumn *column;
   GtkStyleContext *context;
@@ -2182,7 +2181,7 @@ gtk_entry_completion_timeout (gpointer data)
           if (gtk_widget_get_visible (completion->priv->popup_window))
             _gtk_entry_completion_resize_popup (completion);
           else
-            _gtk_entry_completion_popup (completion);
+            gtk_entry_completion_popup (completion);
         }
       else
         _gtk_entry_completion_popdown (completion);
@@ -2612,6 +2611,35 @@ connect_completion_signals (GtkEntryCompletion *completion)
     }
 }
 
+static void
+set_accessible_relation (GtkWidget *window,
+                         GtkWidget *entry)
+{
+  AtkObject *window_accessible;
+  AtkObject *entry_accessible;
+
+  window_accessible = gtk_widget_get_accessible (window);
+  entry_accessible = gtk_widget_get_accessible (entry);
+
+  atk_object_add_relationship (window_accessible,
+                               ATK_RELATION_POPUP_FOR,
+                               entry_accessible);
+}
+
+static void
+unset_accessible_relation (GtkWidget *window,
+                           GtkWidget *entry)
+{
+  AtkObject *window_accessible;
+  AtkObject *entry_accessible;
+
+  window_accessible = gtk_widget_get_accessible (window);
+  entry_accessible = gtk_widget_get_accessible (entry);
+
+  atk_object_remove_relationship (window_accessible,
+                                  ATK_RELATION_POPUP_FOR,
+                                  entry_accessible);
+}
 
 static void
 disconnect_completion_signals (GtkEntryCompletion *completion)
@@ -2661,6 +2689,9 @@ _gtk_entry_completion_disconnect (GtkEntryCompletion *completion)
 
   disconnect_completion_signals (completion);
 
+  unset_accessible_relation (completion->priv->popup_window,
+                             completion->priv->entry);
+
   completion->priv->entry = NULL;
 }
 
@@ -2669,5 +2700,9 @@ _gtk_entry_completion_connect (GtkEntryCompletion *completion,
                                GtkEntry           *entry)
 {
   completion->priv->entry = GTK_WIDGET (entry);
+
+  set_accessible_relation (completion->priv->popup_window,
+                           completion->priv->entry);
+
   connect_completion_signals (completion);
 }