rem: gtk_object_set_data ( GTK_OBJECT ( entry ), "insert-text", g_signal_connect_after (GTK_OBJECT(entry), "insert-text", G_CALLBACK(set_text), NULL)); gtk_object_set_data ( GTK_OBJECT ( entry ), "delete-text", g_signal_connect_after (GTK_OBJECT(entry), "delete-text", G_CALLBACK(set_text), NULL));
context: GtkWidget * new_text_entry ( gchar ** value, GCallback * hook ){  GtkWidget * entry;  entry = gtk_entry_new ();  if (value && *value)    gtk_entry_set_text ( GTK_ENTRY(entry), *value );  gtk_object_set_data ( GTK_OBJECT ( entry ), "pointer", value);  gtk_object_set_data ( GTK_OBJECT ( entry ), "insert-hook", 			g_signal_connect_after (GTK_OBJECT(entry), "insert-text",						G_CALLBACK(hook), NULL));  gtk_object_set_data ( GTK_OBJECT ( entry ), "delete-hook", 			g_signal_connect_after (GTK_OBJECT(entry), "delete-text",						G_CALLBACK(hook), NULL));  gtk_object_set_data ( GTK_OBJECT ( entry ), "insert-text", 			g_signal_connect_after (GTK_OBJECT(entry), "insert-text",						G_CALLBACK(set_text), NULL));  gtk_object_set_data ( GTK_OBJECT ( entry ), "delete-text", 			g_signal_connect_after (GTK_OBJECT(entry), "delete-text",						G_CALLBACK(set_text), NULL));  return entry;}