geda-gattrib: Fixed build failure with the latest gtk+.
authorStanislav Brabec <utx@penguin.cz>
Sat, 3 Oct 2009 19:46:09 +0000 (19:46 +0000)
committerutx@penguin.cz <utx@penguin.cz>
Sat, 3 Oct 2009 19:46:09 +0000 (19:46 +0000)
recipes/geda/files/gattrib-gtk218.patch [new file with mode: 0644]
recipes/geda/geda-gattrib_1.4.3.bb

diff --git a/recipes/geda/files/gattrib-gtk218.patch b/recipes/geda/files/gattrib-gtk218.patch
new file mode 100644 (file)
index 0000000..c1bbdd9
--- /dev/null
@@ -0,0 +1,110 @@
+Index: geda-gattrib-1.4.3/src/gtkitementry_2_2.c
+===================================================================
+--- geda-gattrib-1.4.3.orig/src/gtkitementry_2_2.c
++++ geda-gattrib-1.4.3/src/gtkitementry_2_2.c
+@@ -811,23 +811,23 @@ gtk_entry_real_insert_text (GtkEditable
+       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 @@ gtk_entry_real_insert_text (GtkEditable
+           }
+       }
+-      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 @@ gtk_entry_real_delete_text (GtkEditable
+       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_entry_retrieve_surrounding_cb (GtkIM
+ {
+   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 @@ gtk_entry_create_layout (GtkEntry *entry
+       
+       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 @@ gtk_entry_create_layout (GtkEntry *entry
+           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 @@ gtk_entry_create_layout (GtkEntry *entry
+     {
+       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
+         {
index af4ea94..7cc306d 100644 (file)
@@ -4,7 +4,8 @@ FILES_${PN} += "${datadir}/gEDA ${datadir}/icons"
 
 DEPENDS = "gtk+ libgeda"
 
-SRC_URI = "http://geda.seul.org/release/v1.4/${PV}/${P}.tar.gz"
+SRC_URI = "http://geda.seul.org/release/v1.4/${PV}/${P}.tar.gz \
+      ${@['file://gattrib-gtk218.patch;patch=1', ''][bb.data.getVar('PREFERRED_VERSION_gtk+', d, 1) and bb.data.getVar('PREFERRED_VERSION_gtk+', d, 1).split('.')[0] <= '2' and bb.data.getVar('PREFERRED_VERSION_gtk+', d, 1).split('.')[1] < '18']}"
 
 inherit autotools pkgconfig