+#if HAVE_GTKENTRYBUFFER
+ GtkEntry *entry = GTK_ENTRY (editable);
+ GtkEntryBuffer *buffer = gtk_entry_get_buffer (entry);
+
+ guint n_inserted;
+ gint n_chars;
+
+ n_chars = g_utf8_strlen (new_text, new_text_length);
+
+ /*
+ * The actual insertion into the buffer. This will end up firing the
+ * following signal handlers: buffer_inserted_text(), buffer_notify_display_text(),
+ * buffer_notify_text(), buffer_notify_length()
+ */
+ n_inserted = gtk_entry_buffer_insert_text (buffer, *position, new_text, n_chars);
+
+ if (n_inserted != n_chars)
+ gtk_widget_error_bell (GTK_WIDGET (editable));
+
+ *position += n_inserted;
+#else /* !HAVE_GTKENTRYBUFFER */