]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkentrycompletion.c
Place the search icon in the primary slot of the entry
[~andy/gtk] / gtk / gtkentrycompletion.c
index dbc14f0041245be4e27e47a867a942fef255637a..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:
@@ -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);
 }