--- /dev/null
+diff -ur -u geda-gattrib-1.4.3.orig/src/gtkitementry_2_2.c geda-gattrib-1.4.3/src/gtkitementry_2_2.c
+--- geda-gattrib-1.4.3.orig/src/gtkitementry_2_2.c 2010-06-08 16:53:06.000000000 +0000
++++ geda-gattrib-1.4.3/src/gtkitementry_2_2.c 2010-06-08 16:56:16.000000000 +0000
+@@ -811,23 +811,23 @@
+ new_text_length = g_utf8_offset_to_pointer (new_text, n_chars) - new_text;
+ }
+
+- if (new_text_length + entry->n_bytes + 1 > entry->text_size)
++ if (new_text_length + entry->x_n_bytes + 1 > entry->x_text_size)
+ {
+- while (new_text_length + entry->n_bytes + 1 > entry->text_size)
++ while (new_text_length + entry->x_n_bytes + 1 > entry->x_text_size)
+ {
+- if (entry->text_size == 0)
+- entry->text_size = MIN_SIZE;
++ if (entry->x_text_size == 0)
++ entry->x_text_size = MIN_SIZE;
+ else
+ {
+- if (2 * (guint)entry->text_size < MAX_SIZE &&
+- 2 * (guint)entry->text_size > entry->text_size)
+- entry->text_size *= 2;
++ if (2 * (guint)entry->x_text_size < MAX_SIZE &&
++ 2 * (guint)entry->x_text_size > entry->x_text_size)
++ entry->x_text_size *= 2;
+ else
+ {
+- entry->text_size = MAX_SIZE;
+- if (new_text_length > (gint)entry->text_size - (gint)entry->n_bytes - 1)
++ entry->x_text_size = MAX_SIZE;
++ if (new_text_length > (gint)entry->x_text_size - (gint)entry->x_n_bytes - 1)
+ {
+- new_text_length = (gint)entry->text_size - (gint)entry->n_bytes - 1;
++ new_text_length = (gint)entry->x_text_size - (gint)entry->x_n_bytes - 1;
+ new_text_length = g_utf8_find_prev_char (new_text, new_text + new_text_length + 1) - new_text;
+ n_chars = g_utf8_strlen (new_text, new_text_length);
+ }
+@@ -836,19 +836,19 @@
+ }
+ }
+
+- entry->text = g_realloc (entry->text, entry->text_size);
++ entry->text = g_realloc (entry->text, entry->x_text_size);
+ }
+
+ index = g_utf8_offset_to_pointer (entry->text, *position) - entry->text;
+
+- g_memmove (entry->text + index + new_text_length, entry->text + index, entry->n_bytes - index);
++ g_memmove (entry->text + index + new_text_length, entry->text + index, entry->x_n_bytes - index);
+ memcpy (entry->text + index, new_text, new_text_length);
+
+- entry->n_bytes += new_text_length;
++ entry->x_n_bytes += new_text_length;
+ entry->text_length += n_chars;
+
+ /* NUL terminate for safety and convenience */
+- entry->text[entry->n_bytes] = '\0';
++ entry->text[entry->x_n_bytes] = '\0';
+
+ if (entry->current_pos > *position)
+ entry->current_pos += n_chars;
+@@ -881,9 +881,9 @@
+ gint start_index = g_utf8_offset_to_pointer (entry->text, start_pos) - entry->text;
+ gint end_index = g_utf8_offset_to_pointer (entry->text, end_pos) - entry->text;
+
+- g_memmove (entry->text + start_index, entry->text + end_index, entry->n_bytes + 1 - end_index);
++ g_memmove (entry->text + start_index, entry->text + end_index, entry->x_n_bytes + 1 - end_index);
+ entry->text_length -= (end_pos - start_pos);
+- entry->n_bytes -= (end_index - start_index);
++ entry->x_n_bytes -= (end_index - start_index);
+
+ if (entry->current_pos > start_pos)
+ entry->current_pos -= MIN (entry->current_pos, end_pos) - start_pos;
+@@ -1157,7 +1157,7 @@
+ {
+ gtk_im_context_set_surrounding (context,
+ entry->text,
+- entry->n_bytes,
++ entry->x_n_bytes,
+ g_utf8_offset_to_pointer (entry->text, entry->current_pos) - entry->text);
+
+ return TRUE;
+@@ -1364,7 +1364,7 @@
+
+ if (entry->visible)
+ {
+- g_string_prepend_len (tmp_string, entry->text, entry->n_bytes);
++ g_string_prepend_len (tmp_string, entry->text, entry->x_n_bytes);
+ g_string_insert (tmp_string, cursor_index, preedit_string);
+ }
+ else
+@@ -1373,7 +1373,7 @@
+ gint preedit_len_chars;
+ gunichar invisible_char;
+
+- ch_len = g_utf8_strlen (entry->text, entry->n_bytes);
++ ch_len = g_utf8_strlen (entry->text, entry->x_n_bytes);
+ preedit_len_chars = g_utf8_strlen (preedit_string, -1);
+ ch_len += preedit_len_chars;
+
+@@ -1407,7 +1407,7 @@
+ {
+ if (entry->visible)
+ {
+- pango_layout_set_text (layout, entry->text, entry->n_bytes);
++ pango_layout_set_text (layout, entry->text, entry->x_n_bytes);
+ }
+ else
+ {
--- /dev/null
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-electronics/geda-gattrib/geda-gattrib-1.4.3-r1.ebuild,v 1.1 2010/06/08 17:14:26 tomjbe Exp $
+
+EAPI="2"
+
+inherit eutils fdo-mime versionator
+
+DESCRIPTION="GPL Electronic Design Automation: attribute editor"
+HOMEPAGE="http://www.gpleda.org/"
+SRC_URI="http://geda.seul.org/release/v$(get_version_component_range 1-2)/${PV}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+IUSE="nls"
+
+RDEPEND="=sci-libs/libgeda-${PV}*
+ =sci-electronics/geda-symbols-${PV}*
+ >=dev-libs/glib-2.4
+ >=x11-libs/gtk+-2.4
+ || ( =dev-scheme/guile-1.6* =dev-scheme/guile-1.8*[deprecated] )
+ nls? ( virtual/libintl )"
+
+DEPEND="${RDEPEND}
+ !<sci-electronics/geda-1.4.3-r1
+ >=dev-util/intltool-0.35
+ >=dev-util/pkgconfig-0.9
+ nls? ( sys-devel/gettext )"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-gtkentry.patch
+}
+
+src_configure() {
+ # nls may not work if LINGUAS is set -- upstream bug, they use only variants
+ # like de_DE.po. See Debian bug #336796
+ use nls && unset LINGUAS
+ econf \
+ $(use_enable nls) \
+ --disable-dependency-tracking \
+ --disable-update-desktop-database
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "install failed"
+ dodoc AUTHORS BUGS NEWS README
+}
+
+pkg_postinst() {
+ fdo-mime_desktop_database_update
+}
+
+pkg_postrm() {
+ fdo-mime_desktop_database_update
+}