rpms/gtkhtml38/devel gtkhtml-3.10.0-im-too-late.patch, NONE, 1.1 gtkhtml-3.11.92-chain-finalize.patch, NONE, 1.1 gtkhtml-3.3.0-crash.patch, NONE, 1.1 gtkhtml-3.3.2-imcommit.patch, NONE, 1.1 gtkhtml-fix-indic-navigation-129212.patch, NONE, 1.1 gtkhtml38.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Bill Nottingham (notting) fedora-extras-commits at redhat.com
Wed Mar 14 01:28:41 UTC 2007


Author: notting

Update of /cvs/extras/rpms/gtkhtml38/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv6176/devel

Modified Files:
	.cvsignore sources 
Added Files:
	gtkhtml-3.10.0-im-too-late.patch 
	gtkhtml-3.11.92-chain-finalize.patch gtkhtml-3.3.0-crash.patch 
	gtkhtml-3.3.2-imcommit.patch 
	gtkhtml-fix-indic-navigation-129212.patch gtkhtml38.spec 
Log Message:
auto-import gtkhtml38-3.12.3-3 on branch devel from gtkhtml38-3.12.3-3.src.rpm

gtkhtml-3.10.0-im-too-late.patch:

--- NEW FILE gtkhtml-3.10.0-im-too-late.patch ---
--- gtkhtml-3.10.0/src/gtkhtml.c.fix	2006-04-07 08:54:58.000000000 -0700
+++ gtkhtml-3.10.0/src/gtkhtml.c	2006-04-07 08:55:54.000000000 -0700
@@ -3181,10 +3181,14 @@
 	PangoAttrList *attrs;
 	gchar *preedit_string;
 	gint cursor_pos, initial_position;
-	gboolean state = html->priv->im_block_reset;
+	gboolean state;
 	gboolean pop_selection = FALSE;
 	gint deleted = 0;
 
+	g_return_if_fail (html->priv != NULL);
+
+	state = html->priv->im_block_reset;
+
 	D_IM (printf ("IM preedit changed cb [begin] cursor %d(%p) mark %d(%p) active: %d\n",
 		      html->engine->cursor ? html->engine->cursor->position : 0, html->engine->cursor,
 		      html->engine->mark ? html->engine->mark->position : 0, html->engine->mark,

gtkhtml-3.11.92-chain-finalize.patch:

--- NEW FILE gtkhtml-3.11.92-chain-finalize.patch ---
--- gtkhtml-3.11.92/a11y/table.c.chain-finalize	2004-12-29 06:23:53.000000000 -0500
+++ gtkhtml-3.11.92/a11y/table.c	2006-08-29 12:22:01.000000000 -0400
@@ -102,11 +102,6 @@
 }
 
 static void
-html_a11y_table_finalize (GObject *obj)
-{
-}
-
-static void
 html_a11y_table_initialize (AtkObject *obj, gpointer data)
 {
 	/* printf ("html_a11y_table_initialize\n"); */
@@ -118,13 +113,11 @@
 static void
 html_a11y_table_class_init (HTMLA11YTableClass *klass)
 {
-	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 	AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
 
 	parent_class = g_type_class_peek_parent (klass);
 
 	atk_class->initialize = html_a11y_table_initialize;
-	gobject_class->finalize = html_a11y_table_finalize;
 }
 
 static void
--- gtkhtml-3.11.92/a11y/cell.c.chain-finalize	2002-11-01 10:34:27.000000000 -0500
+++ gtkhtml-3.11.92/a11y/cell.c	2006-08-29 12:22:01.000000000 -0400
@@ -60,11 +60,6 @@
 }
 
 static void
-html_a11y_cell_finalize (GObject *obj)
-{
-}
-
-static void
 html_a11y_cell_initialize (AtkObject *obj, gpointer data)
 {
 	/* printf ("html_a11y_cell_initialize\n"); */
@@ -76,13 +71,11 @@
 static void
 html_a11y_cell_class_init (HTMLA11YCellClass *klass)
 {
-	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 	AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
 
 	parent_class = g_type_class_peek_parent (klass);
 
 	atk_class->initialize = html_a11y_cell_initialize;
-	gobject_class->finalize = html_a11y_cell_finalize;
 }
 
 static void
--- gtkhtml-3.11.92/a11y/paragraph.c.chain-finalize	2002-11-01 10:34:27.000000000 -0500
+++ gtkhtml-3.11.92/a11y/paragraph.c	2006-08-29 12:22:01.000000000 -0400
@@ -55,11 +55,6 @@
 }
 
 static void
-html_a11y_paragraph_finalize (GObject *obj)
-{
-}
-
-static void
 html_a11y_paragraph_initialize (AtkObject *obj, gpointer data)
 {
 	/* printf ("html_a11y_paragraph_initialize\n"); */
@@ -71,13 +66,11 @@
 static void
 html_a11y_paragraph_class_init (HTMLA11YParagraphClass *klass)
 {
-	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 	AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
 
 	parent_class = g_type_class_peek_parent (klass);
 
 	atk_class->initialize = html_a11y_paragraph_initialize;
-	gobject_class->finalize = html_a11y_paragraph_finalize;
 }
 
 static void
--- gtkhtml-3.11.92/a11y/object.h.chain-finalize	2002-11-01 10:34:27.000000000 -0500
+++ gtkhtml-3.11.92/a11y/object.h	2006-08-29 12:34:24.000000000 -0400
@@ -43,8 +43,6 @@
 struct _GtkHTMLA11Y
 {
 	GtkAccessible parent;
-
-	AtkObject *tree;
 };
 
 GType gtk_html_a11y_get_type (void);
--- gtkhtml-3.11.92/a11y/object.c.chain-finalize	2006-05-09 04:54:05.000000000 -0400
+++ gtkhtml-3.11.92/a11y/object.c	2006-08-29 12:22:01.000000000 -0400
@@ -153,11 +153,6 @@
 }
 
 static void
-gtk_html_a11y_finalize (GObject *obj)
-{
-}
-
-static void
 gtk_html_a11y_initialize (AtkObject *obj, gpointer data)
 {
 	/* printf ("gtk_html_a11y_initialize\n"); */
@@ -261,7 +256,6 @@
 static void
 gtk_html_a11y_class_init (GtkHTMLA11YClass *klass)
 {
-	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 	AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
 
 	parent_class = g_type_class_peek_parent (klass);
@@ -270,8 +264,6 @@
 	atk_class->get_n_children = gtk_html_a11y_get_n_children;
 	atk_class->ref_child = gtk_html_a11y_ref_child;
 	atk_class->get_name = gtk_html_a11y_get_name;
-
-	gobject_class->finalize = gtk_html_a11y_finalize;
 }
 
 static void
--- gtkhtml-3.11.92/a11y/text.c.chain-finalize	2006-06-14 00:56:08.000000000 -0400
+++ gtkhtml-3.11.92/a11y/text.c	2006-08-29 12:22:01.000000000 -0400
@@ -249,6 +249,14 @@
 static void
 html_a11y_text_finalize (GObject *obj)
 {
+	HTMLA11YText *ato = HTML_A11Y_TEXT (obj);
+
+	if (ato->util != NULL) {
+		g_object_unref (ato->util);
+		ato->util = NULL;
+	}
+
+	G_OBJECT_CLASS (parent_class)->finalize (obj);
 }
 
 static void
--- gtkhtml-3.11.92/a11y/html.c.chain-finalize	2006-02-28 14:49:22.000000000 -0500
+++ gtkhtml-3.11.92/a11y/html.c	2006-08-29 12:22:01.000000000 -0400
@@ -98,11 +98,6 @@
 }
 
 static void
-html_a11y_finalize (GObject *obj)
-{
-}
-
-static void
 html_a11y_initialize (AtkObject *obj, gpointer data)
 {
 	/* printf ("html_a11y_initialize\n"); */
@@ -116,7 +111,6 @@
 static void
 html_a11y_class_init (HTMLA11YClass *klass)
 {
-	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 	AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
 
 	parent_class = g_type_class_peek_parent (klass);
@@ -127,8 +121,6 @@
 	atk_class->ref_state_set = html_a11y_ref_state_set;
 	atk_class->get_n_children = html_a11y_get_n_children;
 	atk_class->ref_child = html_a11y_ref_child;
-
-	gobject_class->finalize = html_a11y_finalize;
 }
 
 static void
--- gtkhtml-3.11.92/a11y/image.c.chain-finalize	2005-05-17 10:47:56.000000000 -0400
+++ gtkhtml-3.11.92/a11y/image.c	2006-08-29 12:22:01.000000000 -0400
@@ -86,11 +86,6 @@
 }
 
 static void
-html_a11y_image_finalize (GObject *obj)
-{
-}
-
-static void
 html_a11y_image_initialize (AtkObject *obj, gpointer data)
 {
 	/* printf ("html_a11y_image_initialize\n"); */
@@ -102,14 +97,12 @@
 static void
 html_a11y_image_class_init (HTMLA11YImageClass *klass)
 {
-	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 	AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
 
 	parent_class = g_type_class_peek_parent (klass);
 
 	atk_class->get_name = html_a11y_image_get_name;
 	atk_class->initialize = html_a11y_image_initialize;
-	gobject_class->finalize = html_a11y_image_finalize;
 }
 
 static void
--- gtkhtml-3.11.92/src/htmltokenizer.c.chain-finalize	2004-05-13 11:07:33.000000000 -0400
+++ gtkhtml-3.11.92/src/htmltokenizer.c	2006-08-29 12:22:01.000000000 -0400
@@ -259,6 +259,8 @@
 
 	g_free (t->priv);
 	t->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->finalize (obj);
 }
 
 GtkType

gtkhtml-3.3.0-crash.patch:

--- NEW FILE gtkhtml-3.3.0-crash.patch ---
--- gtkhtml-3.3.0/src/htmlclue.c.crash	2004-08-13 15:52:27.777093526 +0100
+++ gtkhtml-3.3.0/src/htmlclue.c	2004-08-13 15:52:29.494761807 +0100
@@ -149,7 +149,7 @@
 		last = html_object_prev_not_slave (last);
 
 	g_assert (o->parent == self);
-	g_assert (last->parent == self);
+	g_assert (!last || last->parent == self);
 
 	while (o) {
 		cnext = html_object_next_not_slave (o);

gtkhtml-3.3.2-imcommit.patch:

--- NEW FILE gtkhtml-3.3.2-imcommit.patch ---
--- gtkhtml-3.3.2/src/gtkhtml-private.h.imcommit	2004-05-14 07:24:15.000000000 -0400
+++ gtkhtml-3.3.2/src/gtkhtml-private.h	2004-09-21 17:40:45.896197864 -0400
@@ -57,6 +57,7 @@
 	gint im_pre_len;
 	gint im_pre_pos;
 	GtkHTMLFontStyle im_orig_style;
+	gboolean im_hide_cursor;
 	gboolean im_block_reset;
 
 	HTMLObject *dnd_object;
--- gtkhtml-3.3.2/src/gtkhtml.c.imcommit	2004-09-16 18:17:19.000000000 -0400
+++ gtkhtml-3.3.2/src/gtkhtml.c	2004-09-21 17:40:46.036176584 -0400
@@ -1009,7 +1009,7 @@
 
 	html_engine_unrealize (html->engine);
 
-	gtk_im_context_set_client_window (html->priv->im_context, widget->window);
+	gtk_im_context_set_client_window (html->priv->im_context, NULL);
 
 	html_image_factory_stop_animations (html->engine->image_factory);
 
@@ -2993,130 +2993,151 @@
 	}
 }
 
+/* Removes the current preedit string if any; note that it doesn't reset
+ * im_pre_pos/im_pre_len, so it must be followed by a call to update_preedit
+ */
 static void
-gtk_html_im_commit_cb (GtkIMContext *context, const gchar *str, GtkHTML *html)
+remove_preedit (GtkHTML *html)
 {
-	gboolean state = html->priv->im_block_reset;
-	gint pos;
-
-        if (html->priv->im_pre_len > 0) {
-                D_IM (printf ("IM delete last preedit %d + %d\n", html->priv->im_pre_pos, html->priv->im_pre_len);)
-                                                                                
-                html_undo_freeze (html->engine->undo);
-                html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos);
-                html_engine_set_mark (html->engine);
-                html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos + html->priv->im_pre_len);
-                html_engine_delete (html->engine);
-                html->priv->im_pre_len = 0;
-                html_undo_thaw (html->engine->undo);
-        }
-
-	pos = html->engine->cursor->position;
-	if (html->engine->mark && html->engine->mark->position > pos)
-		pos = html->engine->mark->position;
-
-	html->priv->im_block_reset = TRUE;
-	D_IM (printf ("IM commit %s\n", str);)
-	
-	/* Move cusor before preedit pos and commit the string */
-	html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos);
-	html_engine_paste_text (html->engine, str, -1);
-	/* Add preedit pos with number of str committed and move back */
-	html->priv->im_pre_pos += g_utf8_strlen (str, -1);
-	html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos);
-
-	html->priv->im_block_reset = state;
-
-	D_IM (printf ("IM commit pos: %d pre_pos: %d\n", pos, html->priv->im_pre_pos);)
-
-	if (html->priv->im_pre_pos >= pos)
-		html->priv->im_pre_pos += html->engine->cursor->position - pos;
-}
+	if (html->priv->im_pre_len > 0) {
+		gboolean state = html->priv->im_block_reset;
+		html->priv->im_block_reset = TRUE;
+		
+		html_undo_freeze (html->engine->undo);
+		html_engine_selection_push (html->engine);
 
-static void
-gtk_html_im_preedit_start_cb (GtkIMContext *context, GtkHTML *html)
-{
-	html->priv->im_pre_len = 0;
+		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos);
+		html_engine_set_mark (html->engine);
+		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos + html->priv->im_pre_len);
+		html_engine_delete (html->engine);
+		
+		html_engine_selection_pop (html->engine);
+		html_undo_thaw (html->engine->undo);
+		
+		html->priv->im_block_reset = state;
+	} else {
+		/* The current style can get confused while we are have a preedit string
+		 * in place, so we save the current style before we start preediting, and
+		 * restore it when the preedit string vanishes. (See bug #66204)
+		 */
+		html->priv->im_orig_style = html_engine_get_font_style (html->engine);
+	}
 }
 
 static void
-gtk_html_im_preedit_changed_cb (GtkIMContext *context, GtkHTML *html)
+update_preedit (GtkHTML *html)
 {
 	PangoAttrList *attrs;
 	gchar *preedit_string;
-	gint cursor_pos, initial_position;
+	gint cursor_pos, preedit_position;
 	gboolean state = html->priv->im_block_reset;
-	gboolean pop_selection = FALSE;
-	gint deleted = 0;
+	gboolean had_selection = FALSE;
+	gboolean had_preedit = html->priv->im_pre_len > 0;
+	gboolean hide_cursor;
 
-	D_IM (printf ("IM preedit changed cb [begin] cursor %d(%p) mark %d(%p) active: %d\n",
-		      html->engine->cursor ? html->engine->cursor->position : 0, html->engine->cursor,
-		      html->engine->mark ? html->engine->mark->position : 0, html->engine->mark,
-		      html_engine_is_selection_active (html->engine));)
 	html->priv->im_block_reset = TRUE;
 
+	html_undo_freeze (html->engine->undo);
+
+	/* The handling of the combination of a selection and a preedit string
+	 * is imperfect because the selection runs from the 'mark' to the cursor,
+	 * so we can't display the selection plus a separate cursor.
+	 *
+	 * What we do is display the preedit text after the selection (even if
+	 * the cursor is at the beginning of the selection), and hide the cursor.
+	 * It is generally going to be less confusing not to display a cursor
+	 * at all then to display a cursor in the wrong location. Putting the
+	 * preedit text after the selection has the handy side effect that the
+	 * preedit string doesn't affect the selection bounds.
+	 */
 	if (html_engine_is_selection_active (html->engine)) {
-		D_IM (printf ("IM push selection\n");)
 		html_engine_selection_push (html->engine);
+
+		preedit_position = MAX (html_cursor_get_position (html->engine->mark),
+					html_cursor_get_position (html->engine->cursor));
+		
+		/* We need to temporarily remove the selection, or when we paste in the preedit text,
+		 * it will replace the selection. 
+		 */
 		html_engine_disable_selection (html->engine);
+		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, preedit_position);
 		html_engine_edit_selection_updater_update_now (html->engine->selection_updater);
-		pop_selection = TRUE;
+		had_selection = TRUE;
 	}
-	initial_position = html->engine->cursor->position;
-	D_IM (printf ("IM initial position %d\n", initial_position);)
 
-	html_undo_freeze (html->engine->undo);
-
-	if (html->priv->im_pre_len > 0) {
-		D_IM (printf ("IM delete last preedit %d + %d\n", html->priv->im_pre_pos, html->priv->im_pre_len);)
-		
-		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos);
-		html_engine_set_mark (html->engine);
-		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos + html->priv->im_pre_len);
-		html_engine_delete (html->engine);
-		deleted = html->priv->im_pre_len;
-	} else
-		html->priv->im_orig_style = html_engine_get_font_style (html->engine);
-
-	gtk_im_context_get_preedit_string (html->priv->im_context, &preedit_string, &attrs, &cursor_pos);
-
-	D_IM (printf ("IM preedit changed to %s\n", preedit_string);)
+	/* Insert the new preedit string
+	 */
+	gtk_im_context_get_preedit_string (html->priv->im_context,
+					   &preedit_string, &attrs, &cursor_pos);
+	
 	html->priv->im_pre_len = g_utf8_strlen (preedit_string, -1);
+	cursor_pos = CLAMP (cursor_pos, 0, html->priv->im_pre_len); /* Paranoia */
 
 	if (html->priv->im_pre_len > 0) {
-		cursor_pos = CLAMP (cursor_pos, 0, html->priv->im_pre_len);
 		html->priv->im_pre_pos = html->engine->cursor->position;
 		html_engine_paste_text_with_extra_attributes (html->engine, preedit_string, html->priv->im_pre_len, attrs);
-		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos + cursor_pos);
-	} else
+	} else if (had_preedit)
 		html_engine_set_font_style (html->engine, 0, html->priv->im_orig_style);
+
 	g_free (preedit_string);
+	pango_attr_list_unref (attrs);
 
-	if (pop_selection) {
-		gint position= html->engine->cursor->position, cpos, mpos;
-		D_IM (printf ("IM pop selection\n");)
-		g_assert (html_engine_selection_stack_top (html->engine, &cpos, &mpos));
-		if (position < MAX (cpos, mpos) + html->priv->im_pre_len - deleted)
-			g_assert (html_engine_selection_stack_top_modify (html->engine, html->priv->im_pre_len - deleted));
-		html_engine_selection_pop (html->engine);
+	/* Update the cursor hiding
+	 */
+	hide_cursor = had_selection && html->priv->im_pre_len > 0;
+	if (hide_cursor != html->priv->im_hide_cursor) {
+		if (hide_cursor)
+			html_engine_hide_cursor (html->engine);
+		else
+			html_engine_show_cursor (html->engine);
+
+		html->priv->im_hide_cursor = hide_cursor;
 	}
-	/* that works for now, but idealy we should be able to have cursor positioned outside selection, so that preedit
-	   cursor is in the right place */
-	if (html->priv->im_pre_len == 0)
-		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine,
-						       initial_position >= html->priv->im_pre_pos + deleted ? initial_position - deleted : initial_position);
+
+	/* Get the correct cursor and mark for the new preedit string
+	 */
+	if (had_selection)
+		html_engine_selection_pop (html->engine);
+	else if (html->priv->im_pre_len > 0)
+		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, html->priv->im_pre_pos + cursor_pos);
 
 	if (html->engine->freeze_count == 1)
 		html_engine_thaw_idle_flush (html->engine);
-	/* FIXME gtk_im_context_set_cursor_location (im_context, &area); */
+	
 	html->priv->im_block_reset = state;
 
 	html_undo_thaw (html->engine->undo);
+}
 
-	D_IM (printf ("IM preedit changed cb [end] cursor %d(%p) mark %d(%p) active: %d\n",
-		      html->engine->cursor ? html->engine->cursor->position : 0, html->engine->cursor,
-		      html->engine->mark ? html->engine->mark->position : 0, html->engine->mark,
-		      html_engine_is_selection_active (html->engine));)
+static void
+gtk_html_im_commit_cb (GtkIMContext *context, const gchar *str, GtkHTML *html)
+{
+	gboolean state = html->priv->im_block_reset;
+
+	html->priv->im_block_reset = TRUE;
+	
+	D_IM (printf ("IM commit %s\n", str);)
+	
+	remove_preedit (html);
+
+	html_engine_paste_text (html->engine, str, -1);
+	
+	update_preedit (html);
+
+	html->priv->im_block_reset = state;
+}
+
+static void
+gtk_html_im_preedit_start_cb (GtkIMContext *context, GtkHTML *html)
+{
+	html->priv->im_pre_len = 0;
+}
+
+static void
+gtk_html_im_preedit_changed_cb (GtkIMContext *context, GtkHTML *html)
+{
+	remove_preedit (html);
+	update_preedit (html);
 }
 
 static gchar *
@@ -3127,6 +3148,7 @@
 	gchar *text = NULL;
 
 	if (!html_object_is_text (o)) {
+		*offset = 0;
 		if (e->cursor->offset == 0) {
 			prev = html_object_prev_not_slave (o);
 			if (html_object_is_text (prev)) {
@@ -3142,7 +3164,6 @@
 			} else
 				return NULL;
 		}
-		*offset = 0;
 	} else
 		*offset = e->cursor->offset;
 
@@ -3163,10 +3184,14 @@
 static gboolean
 gtk_html_im_retrieve_surrounding_cb (GtkIMContext *context, GtkHTML *html)
 {
-	gint offset;
+	gint cursor_offset, cursor_index;
+	gchar *str;
+
+	D_IM (printf ("IM gtk_html_im_retrieve_surrounding_cb\n"));
 
-	D_IM (printf ("IM gtk_html_im_retrieve_surrounding_cb\n");)
-	gtk_im_context_set_surrounding (context, get_surrounding_text (html->engine, &offset), -1, offset);
+	str = get_surrounding_text (html->engine, &cursor_offset);
+	cursor_index = g_utf8_offset_to_pointer (str, cursor_offset) - str;
+	gtk_im_context_set_surrounding (context, str, -1, cursor_index);
 
 	return TRUE;
 }
@@ -3182,8 +3207,9 @@
 		html_engine_set_mark (html->engine);
 		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, orig_position + offset + n_chars);
 		html_engine_delete (html->engine);
-		if (offset >= 0)
-			html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, orig_position);
+		if (offset < 0)
+			orig_position -= MIN (n_chars, - offset);
+		html_cursor_jump_to_position_no_spell (html->engine->cursor, html->engine, orig_position);
 	}
 	return TRUE;
 }
--- gtkhtml-3.3.2/src/htmlengine-edit-cut-and-paste.c.imcommit	2004-09-16 17:49:53.000000000 -0400
+++ gtkhtml-3.3.2/src/htmlengine-edit-cut-and-paste.c	2004-09-21 17:40:46.039176128 -0400
@@ -460,11 +460,11 @@
 place_cursor_before_mark (HTMLEngine *e)
 {
 	if (e->mark->position < e->cursor->position) {
-		HTMLCursor *tmp;
+		HTMLCursor tmp;
 
-		tmp = e->cursor;
-		e->cursor = e->mark;
-		e->mark = tmp;
+		html_cursor_copy (&tmp, e->cursor);
+		html_cursor_copy (e->cursor, e->mark);
+		html_cursor_copy (e->mark, &tmp);
 	}
 }
 
@@ -1713,12 +1713,10 @@
 
 		while (start->position < end->position) {
 			if (start->object->parent->parent == end->object->parent->parent) {
-				if (e->mark)
-					html_cursor_destroy (e->mark);
-				html_cursor_destroy (e->cursor);
-				e->mark = start;
-				e->cursor = end;
-				start = end = NULL;
+				if (!e->mark)
+					e->mark = html_cursor_new ();
+				html_cursor_copy (e->mark, start);
+				html_cursor_copy (e->cursor, end);
 				delete_object (e, NULL, NULL, HTML_UNDO_UNDO, TRUE);
 				break;
 			} else {
@@ -1750,10 +1748,8 @@
 			}
 		}
 
-		if (start)
-			html_cursor_destroy (start);
-		if (end)
-			html_cursor_destroy (end);
+		html_cursor_destroy (start);
+		html_cursor_destroy (end);
 		html_cursor_jump_to_position (e->cursor, e, start_position);
 	}
 	html_undo_level_end (e->undo);

gtkhtml-fix-indic-navigation-129212.patch:

--- NEW FILE gtkhtml-fix-indic-navigation-129212.patch ---
--- orig/src/htmlengine-edit-cut-and-paste.c
+++ mod/src/htmlengine-edit-cut-and-paste.c
@@ -1445,14 +1445,15 @@
 				return;
 			}
 		}
-		while (len != 0) {
-			if (forward)
+		if (forward) {
+			int i;
+
+			for (i = len; i > 0; i--)
 				html_cursor_forward (e->cursor, e);
-			else
-				html_cursor_backward (e->cursor, e);
-			len --;
+			html_engine_delete (e);
+		} else {
+			html_object_backspace (e->cursor->object, e->cursor, e);
 		}
-		html_engine_delete (e);
 		html_engine_unblock_selection (e);
 		html_engine_thaw (e);	
 	}


--- orig/src/htmlobject.c
+++ mod/src/htmlobject.c
@@ -35,6 +35,7 @@
 #include "htmlcursor.h"
 #include "htmlengine.h"
 #include "htmlengine-edit.h"
+#include "htmlengine-edit-cut-and-paste.h"
 #include "htmlengine-save.h"
 #include "htmlframe.h"
 #include "htmlinterval.h"
@@ -604,7 +605,7 @@
 }
 
 static gboolean
-html_object_real_cursor_forward (HTMLObject *self, HTMLCursor *cursor)
+html_object_real_cursor_forward (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine)
 {
 	gint len;
 
@@ -645,7 +646,7 @@
 }
 
 static gboolean
-html_object_real_cursor_backward (HTMLObject *self, HTMLCursor *cursor)
+html_object_real_cursor_backward (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine)
 {
 	g_assert (self);
 	g_assert (cursor->object == self);
@@ -726,6 +727,15 @@
 	return FALSE;
 }
 
+static gboolean
+html_object_real_backspace (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine)
+{
+	html_cursor_backward (cursor, engine);
+	html_engine_delete (engine);
+
+	return TRUE;
+}
+
 static int
 html_object_real_get_right_edge_offset (HTMLObject *o, HTMLPainter *painter, int offset)
 {
@@ -813,6 +823,7 @@
 	klass->cursor_backward = html_object_real_cursor_backward;
 	klass->cursor_left = html_object_real_cursor_left;
 	klass->cursor_right = html_object_real_cursor_right;
+	klass->backspace = html_object_real_backspace;
 	klass->get_right_edge_offset = html_object_real_get_right_edge_offset;
 	klass->get_left_edge_offset = html_object_real_get_left_edge_offset;
 }
@@ -1546,15 +1557,15 @@
 }
 
 gboolean
-html_object_cursor_forward (HTMLObject *self, HTMLCursor *cursor)
+html_object_cursor_forward (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine)
 {
-	return (* HO_CLASS (self)->cursor_forward) (self, cursor);
+	return (* HO_CLASS (self)->cursor_forward) (self, cursor, engine);
 }
 
 gboolean
-html_object_cursor_backward (HTMLObject *self, HTMLCursor *cursor)
+html_object_cursor_backward (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine)
 {
-	return (* HO_CLASS (self)->cursor_backward) (self, cursor);
+	return (* HO_CLASS (self)->cursor_backward) (self, cursor, engine);
 }
 
 gboolean
@@ -1569,6 +1580,12 @@
 	return (* HO_CLASS (self)->cursor_left) (self, painter, cursor);
 }
 
+gboolean
+html_object_backspace (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine)
+{
+	return (* HO_CLASS (self)->backspace) (self, cursor, engine);
+}
+
 /*********************
  * movement on leafs
  */


--- orig/src/htmlobject.h
+++ mod/src/htmlobject.h
@@ -262,13 +262,15 @@
 
 	HTMLDirection (*get_direction)   (HTMLObject *self);
 
-	gboolean (*cursor_forward)       (HTMLObject *self, HTMLCursor *cursor);
-	gboolean (*cursor_backward)       (HTMLObject *self, HTMLCursor *cursor);
+	gboolean (*cursor_forward)       (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine);
+	gboolean (*cursor_backward)       (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine);
 	gboolean (*cursor_right)         (HTMLObject *self, HTMLPainter *painter, HTMLCursor *cursor);
 	gboolean (*cursor_left)          (HTMLObject *self, HTMLPainter *painter, HTMLCursor *cursor);
 
 	int (*get_right_edge_offset) (HTMLObject *o, HTMLPainter *painter, int offset);
 	int (*get_left_edge_offset) (HTMLObject *o, HTMLPainter *painter, int offset);
+
+	gboolean (*backspace)       (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine);
 };
 
 extern HTMLObjectClass html_object_class;
@@ -461,15 +463,20 @@
 /* Movement functions */
 /* move cursor in scope of object */
 gboolean        html_object_cursor_forward        (HTMLObject            *self,
-						   HTMLCursor            *cursor);
+						   HTMLCursor            *cursor,
+						   HTMLEngine            *engine);
 gboolean        html_object_cursor_backward       (HTMLObject            *self,
-						   HTMLCursor            *cursor);
+						   HTMLCursor            *cursor,
+						   HTMLEngine            *engine);
 gboolean        html_object_cursor_left           (HTMLObject            *self,
 						   HTMLPainter           *painter,
 						   HTMLCursor            *cursor);
 gboolean        html_object_cursor_right          (HTMLObject            *self,
 						   HTMLPainter           *painter,
 						   HTMLCursor            *cursor);
+gboolean        html_object_backspace             (HTMLObject            *self,
+						   HTMLCursor            *cursor,
+						   HTMLEngine            *engine);
 
 /* get prev/next object in scope of parent */
 HTMLObject     *html_object_next                  (HTMLObject            *self,


--- orig/src/htmltext.c
+++ mod/src/htmltext.c
@@ -33,6 +33,7 @@
 #include "htmltext.h"
 #include "htmlcolor.h"
 #include "htmlcolorset.h"
+#include "htmlcluealigned.h"
 #include "htmlclueflow.h"
 #include "htmlcursor.h"
 #include "htmlgdkpainter.h"
@@ -2501,6 +2502,96 @@
 }
 
 static gboolean
+html_text_cursor_forward (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine)
+{
+	HTMLText *text;
+	HTMLTextPangoInfo *pi = NULL;
+	gint len, attrpos = 0;
+	gboolean retval = FALSE;
+
+	g_assert (self);
+	g_assert (cursor->object == self);
+
+	if (html_object_is_container (self))
+		return FALSE;
+
+	text = HTML_TEXT (self);
+	pi = html_text_get_pango_info (text, engine->painter);
+	len = html_object_get_length (self);
+	do {
+		attrpos = cursor->offset;
+		if (attrpos < len) {
+			cursor->offset++;
+			cursor->position++;
+			retval = TRUE;
+		} else {
+			retval = FALSE;
+			break;
+		}
+	} while (attrpos < len &&
+		 !pi->attrs[attrpos].is_sentence_end &&
+		 !pi->attrs[attrpos + 1].is_cursor_position);
+
+	return retval;
+}
+
+static gboolean
+html_cursor_allow_zero_offset (HTMLCursor *cursor, HTMLObject *o)
+{
+	if (cursor->offset == 1) {
+		HTMLObject *prev;
+
+		prev = html_object_prev_not_slave (o);
+		if (!prev || HTML_IS_CLUEALIGNED (prev))
+			return TRUE;
+		else {
+			while (prev && !html_object_accepts_cursor (prev))
+				prev = html_object_prev_not_slave (prev);
+
+			if (!prev)
+				return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
+static gboolean
+html_text_cursor_backward (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine)
+{
+	HTMLText *text;
+	HTMLTextPangoInfo *pi = NULL;
+	gint len, attrpos = 0;
+	gboolean retval = FALSE;
+
+	g_assert (self);
+	g_assert (cursor->object == self);
+
+	if (html_object_is_container (self))
+		return FALSE;
+
+	text = HTML_TEXT (self);
+	pi = html_text_get_pango_info (text, engine->painter);
+	len = html_object_get_length (self);
+	do {
+		attrpos = cursor->offset;
+		if (cursor->offset > 1 ||
+		    html_cursor_allow_zero_offset (cursor, self)) {
+			cursor->offset--;
+			cursor->position--;
+			retval = TRUE;
+		} else {
+			retval = FALSE;
+			break;
+		}
+	} while (attrpos > 0 &&
+		 !pi->attrs[attrpos].is_sentence_start &&
+		 !pi->attrs[attrpos - 1].is_cursor_position);
+
+	return retval;
+}
+
+static gboolean
 html_text_cursor_right (HTMLObject *self, HTMLPainter *painter, HTMLCursor *cursor)
 {
 	HTMLTextSlave *slave;
@@ -2552,6 +2643,79 @@
 	return FALSE;
 }
 
+static gboolean
+html_text_backspace (HTMLObject *self, HTMLCursor *cursor, HTMLEngine *engine)
+{
+	HTMLText *text;
+	HTMLTextPangoInfo *pi = NULL;
+	guint attrpos = 0, prevpos;
+	gboolean retval = FALSE;
+
+	g_assert (self);
+	g_assert (cursor->object == self);
+
+	text = HTML_TEXT (self);
+	pi = html_text_get_pango_info (text, engine->painter);
+	prevpos = cursor->offset;
+	do {
+		attrpos = cursor->offset;
+		if (cursor->offset > 1 ||
+		    html_cursor_allow_zero_offset (cursor, self)) {
+			cursor->offset--;
+			cursor->position--;
+			retval = TRUE;
+		} else {
+			if (cursor->offset == prevpos)
+				retval = FALSE;
+			break;
+		}
+	} while (attrpos > 0 && !pi->attrs[attrpos].is_cursor_position);
+
+	if (!retval) {
+		HTMLObject *prev;
+		gint offset = cursor->offset;
+
+		/* maybe no characters in this line. */
+		prev = html_object_prev_cursor (cursor->object, &offset);
+		cursor->offset = offset;
+		if (prev) {
+			if (!html_object_is_container (prev))
+				cursor->offset = html_object_get_length (prev);
+			cursor->object = prev;
+			cursor->position--;
+			retval = TRUE;
+		}
+	}
+	if (retval) {
+		if (pi->attrs[attrpos].backspace_deletes_character) {
+			gchar *cluster_text = &text->text[prevpos];
+			gchar *normalized_text = NULL;
+			glong len;
+			gint offset = cursor->offset, pos = cursor->position;
+
+			normalized_text = g_utf8_normalize (cluster_text,
+							    prevpos - attrpos,
+							    G_NORMALIZE_NFD);
+			len = g_utf8_strlen (normalized_text, -1);
+			html_engine_delete (engine);
+			if (len > 1) {
+				html_engine_insert_text (engine, normalized_text,
+							 g_utf8_offset_to_pointer (normalized_text, len - 1) - normalized_text);
+				html_cursor_jump_to (cursor, engine, self, offset);
+			}
+			if (normalized_text)
+				g_free (normalized_text);
+			/* restore a cursor position and offset for a split cursor */
+			engine->cursor->offset = offset;
+			engine->cursor->position = pos;
+		} else {
+			html_engine_delete (engine);
+		}
+	}
+
+	return retval;
+}
+
 static int
 html_text_get_right_edge_offset (HTMLObject *o, HTMLPainter *painter, int offset)
 {
@@ -2621,7 +2785,10 @@
 	object_class->append_selection_string = append_selection_string;
 	object_class->get_url = get_url;
 	object_class->get_target = get_target;
+	object_class->cursor_forward = html_text_cursor_forward;
+	object_class->cursor_backward = html_text_cursor_backward;
 	object_class->cursor_right = html_text_cursor_right;
 	object_class->cursor_left = html_text_cursor_left;
+	object_class->backspace = html_text_backspace;
  	object_class->get_right_edge_offset = html_text_get_right_edge_offset;
 	object_class->get_left_edge_offset = html_text_get_left_edge_offset;
--- gtkhtml-3.10.1/src/htmlcursor.c.fix-indic-navigation	2006-04-10 20:31:00.000000000 -0400
+++ gtkhtml-3.10.1/src/htmlcursor.c	2006-04-10 20:34:57.000000000 -0400
@@ -203,12 +203,12 @@
 
 
 static gboolean
-forward (HTMLCursor *cursor)
+forward (HTMLCursor *cursor, HTMLEngine *engine)
 {
 	gboolean retval;
 
 	retval = TRUE;
-	if (!html_object_cursor_forward (cursor->object, cursor)) {
+	if (!html_object_cursor_forward (cursor->object, cursor, engine)) {
 		HTMLObject *next;
 
 		next = html_object_next_cursor (cursor->object, &cursor->offset);
@@ -237,7 +237,7 @@
 		html_engine_spell_check_range (engine, engine->cursor, engine->cursor);
 
 	cursor->have_target_x = FALSE;
-	retval = forward (cursor);
+	retval = forward (cursor, engine);
 
 	debug_location (cursor);
 
@@ -245,12 +245,12 @@
 }
 
 static gboolean
-backward (HTMLCursor *cursor)
+backward (HTMLCursor *cursor, HTMLEngine *engine)
 {
 	gboolean retval;
 
 	retval = TRUE;
-	if (!html_object_cursor_backward (cursor->object, cursor)) {
+	if (!html_object_cursor_backward (cursor->object, cursor, engine)) {
 		HTMLObject *prev;
 
 		prev = html_object_prev_cursor (cursor->object, &cursor->offset);
@@ -280,7 +280,7 @@
 		html_engine_spell_check_range (engine, engine->cursor, engine->cursor);
 
 	cursor->have_target_x = FALSE;
-	retval = backward (cursor);
+	retval = backward (cursor, engine);
 
 	debug_location (cursor);
 
@@ -337,7 +337,7 @@
 		prev_x = x;
 		prev_y = y;
 
-		if (! backward (cursor))
+		if (! backward (cursor, engine))
 			return FALSE;
 
 		html_object_get_cursor_base (cursor->object,
@@ -556,14 +556,14 @@
 
 	html_cursor_copy (&original, cursor);
 
-	while (forward (cursor)) {
+	while (forward (cursor, engine)) {
 		if (cursor->object == object && cursor->offset == offset)
 			return TRUE;
 	}
 
 	html_cursor_copy (cursor, &original);
 
-	while (backward (cursor)) {
+	while (backward (cursor, engine)) {
 		if (cursor->object == object && cursor->offset == offset)
 			return TRUE;
 	}
@@ -587,7 +587,7 @@
 	if (engine->need_spell_check)
 		html_engine_spell_check_range (engine, engine->cursor, engine->cursor);
 
-	while (backward (cursor))
+	while (backward (cursor, engine))
 		;
 }
 
@@ -604,7 +604,7 @@
 	if (engine->need_spell_check)
 		html_engine_spell_check_range (engine, engine->cursor, engine->cursor);
 
-	while (forward (cursor))
+	while (forward (cursor, engine))
 		;
 }
 
@@ -640,12 +640,12 @@
 
 	if (cursor->position < position) {
 		while (cursor->position < position) {
-			if (! forward (cursor))
+			if (! forward (cursor, engine))
 				break;
 		}
 	} else if (cursor->position > position) {
 		while (cursor->position > position) {
-			if (! backward (cursor))
+			if (! backward (cursor, engine))
 				break;
 		}
 	}
@@ -749,7 +749,7 @@
 	while (1) {
 		if (!cursor->offset) {
 			html_cursor_copy (&copy, cursor);
-			if (backward (cursor)) {
+			if (backward (cursor, engine)) {
 				new_level = html_object_get_parent_level (cursor->object);
 				if (new_level < level
 				    || (new_level == level && flow != cursor->object->parent)) {
@@ -760,7 +760,7 @@
 				break;
 		}
 			else
-				if (!backward (cursor))
+				if (!backward (cursor, engine))
 					break;
 		rv = TRUE;
 	}
@@ -787,7 +787,7 @@
 	while (1) {
 		if (cursor->offset == html_object_get_length (cursor->object)) {
 			html_cursor_copy (&copy, cursor);
-			if (forward (cursor)) {
+			if (forward (cursor, engine)) {
 				new_level = html_object_get_parent_level (cursor->object);
 				if (new_level < level
 				    || (new_level == level && flow != cursor->object->parent)) {
@@ -798,7 +798,7 @@
 				break;
 		}
 			else
-				if (!forward (cursor))
+				if (!forward (cursor, engine))
 					break;
 		rv = TRUE;
 	}


--- NEW FILE gtkhtml38.spec ---
%define gnome_icon_theme_version 1.2.3
%define gtkhtml_major 3.8
%define libgnomeprint_version 2.7.1

### Abstract ###

Name: gtkhtml38
Version: 3.12.3
Release: 3%{?dist}
License: LGPL/GPL
Group: System Environment/Libraries
Summary: GtkHTML library, API version 3.8
Source: http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.12/gtkhtml-%{version}.tar.bz2
URL: http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/
BuildRoot: %{_tmppath}/gtkhtml-%{version}-root

### Patches ###

# Partial band-aid for an editing crash (bug #129844)
# http://bugzilla.ximian.com/show_bug.cgi?id=50052
Patch1: gtkhtml-3.3.0-crash.patch
# Patches from bugzilla.ximian.com #65670, #66206
Patch2: gtkhtml-3.3.2-imcommit.patch
Patch3: gtkhtml-fix-indic-navigation-129212.patch
Patch4: gtkhtml-3.10.0-im-too-late.patch

# Gnome.org bug #353424.
Patch6: gtkhtml-3.11.92-chain-finalize.patch

### Dependencies ###

Requires: gnome-icon-theme >= %{gnome_icon_theme_version}
Requires: libgnomeprint22 >= %{libgnomeprint_version}

### Build Dependencies ###

BuildRequires: gail-devel
BuildRequires: gettext
BuildRequires: gnome-icon-theme >= %{gnome_icon_theme_version}
BuildRequires: intltool
BuildRequires: libglade2-devel >= 2.0
BuildRequires: libgnomeprint22-devel >= %{libgnomeprint_version}
BuildRequires: libgnomeprintui22-devel >= %{libgnomeprint_version}
BuildRequires: libgnomeui-devel >= 2.0
BuildRequires: libtool

### Provides ###
Provides: gtkhtml3 = %{version}-%{release}

%description
GtkHTML is a lightweight HTML rendering/printing/editing engine.  It
was originally based on KHTMLW, but is now being developed
independently of it.

This package implements the GtkHTML 3.8 API, for packages who cannot
use newer versions of GtkHTML.

%package devel
Group: Development/Libraries
Summary: Libraries, includes, etc to develop GtkHTML 3.8 applications
Requires: %{name} = %{version}-%{release}
Requires: libglade2-devel >= 2.0
Requires: libgnomeprint22-devel >= 2.2.0
Requires: libgnomeprintui22-devel >= 2.2.1
Requires: libgnomeui-devel >= 2.0
Provides: gtkhtml3 = %{version}-%{release}

%description devel
Libraries and include files that can be used to develop GtkHTML applications.

This package implements the GtkHTML 3.8 API, for packages who cannot
use newer versions of GtkHTML.

%prep
%setup -q -n gtkhtml-%{version}
%patch1 -p1 -b .crash
%patch3 -p1 -b .fix-129212
%patch4 -p1 -b .im-too-late
%patch6 -p1 -b .chain-finalize

%build
%configure
export tagname=CC
make LIBTOOL=/usr/bin/libtool

%install
rm -rf $RPM_BUILD_ROOT
export tagname=CC
make install LIBTOOL=/usr/bin/libtool DESTDIR=$RPM_BUILD_ROOT

rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la
rm -f $RPM_BUILD_ROOT/%{_libdir}/*.a
rm -f $RPM_BUILD_ROOT/%{_libdir}/gtkhtml/*.la
rm -f $RPM_BUILD_ROOT/%{_libdir}/gtkhtml/*.a

for serverfile in $RPM_BUILD_ROOT%{_libdir}/bonobo/servers/*.server; do
  sed -i -e 's|location *= *"/usr/lib\(64\)*/|location="/usr/$LIB/|' $serverfile
done

%find_lang gtkhtml-%{gtkhtml_major}

%clean
rm -rf $RPM_BUILD_ROOT

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%files -f gtkhtml-%{gtkhtml_major}.lang
%defattr(-, root, root)
%doc AUTHORS ChangeLog NEWS README COPYING COPYING.LIB TODO
%dir %{_libdir}/gtkhtml
%{_libdir}/libgtkhtml-%{gtkhtml_major}.so.*
%{_libdir}/gtkhtml/libgnome-gtkhtml-editor-%{gtkhtml_major}.so
%{_libdir}/bonobo/servers/GNOME_GtkHTML_Editor-%{gtkhtml_major}.server
%{_datadir}/gtkhtml-%{gtkhtml_major}

%files devel
%defattr(-, root, root)
%{_includedir}/libgtkhtml-%{gtkhtml_major}
%{_libdir}/libgtkhtml-%{gtkhtml_major}.so
%{_libdir}/pkgconfig/*.pc

%changelog
* Mon Mar 12 2007 Bill Nottingham <notting at redhat.com> - 3.12.3-3
- remove extraneous rm as noted per review

* Tue Feb 27 2007 Bill Nottingham <notting at redhat.com> - 3.12.3-2
- repackage as gtkhtml38

* Mon Jan 29 2007 Matthew Barnes <mbarnes at redhat.com> - 3.12.3-1.fc6
- Update to 3.12.3

* Mon Nov 20 2006 Matthew Barnes <mbarnes at redhat.com> - 3.12.2-1.fc6
- Update to 3.12.2

* Fri Oct 27 2006 Matthew Barnes <mbarnes at redhat.com> - 3.12.1-1.fc6
- Update to 3.12.1

* Mon Sep  4 2006 Matthew Barnes <mbarnes at redhat.com> - 3.12.0-1.fc6
- Update to 3.12.0
- Remove patch for RH bug #202409 (fixed upstream).

* Tue Aug 29 2006 Matthew Barnes <mbarnes at redhat.com> - 3.11.92-2.fc6
- Add patch for Gnome.org bug #353424.

* Mon Aug 21 2006 Matthew Barnes <mbarnes at redhat.com> - 3.11.92-1.fc6
- Update to 3.11.92

* Fri Aug 18 2006 Matthew Barnes <mbarnes at redhat.com> - 3.11.91-2.fc6
- Add patch for RH bug #202409.

* Mon Aug  7 2006 Matthew Barnes <mbarnes at redhat.com> - 3.11.91-1
- Update to 3.11.91

* Tue Jul 25 2006 Matthew Barnes <mbarnes at redhat.com> - 3.11.90.1-1
- Update to 3.11.90.1

* Wed Jul 12 2006 Matthias Clasen <mclasen at redhat.com> - 3.11.4-2
- Rebuild

* Wed Jul 12 2006 Matthew Barnes <mbarnes at redhat.com> - 3.11.4-1
- Update to 3.11.4

* Wed Jul 12 2006 Jesse Keating <jkeating at redhat.com> - 3.11.3-1.1
- rebuild

* Tue Jun 13 2006 Matthias Clasen <mclasen at redhat.com> - 3.11.3-1
- Update to 3.11.3

* Tue May 16 2006 Matthew Barnes <mbarnes at redhat.com> - 3.11.2-1
- Update to 3.11.2

* Mon Apr 10 2006 Matthias Clasen <mclasen at redhat.com> - 3.10.1-2
- Update to 3.10.1
- Update patches

* Fri Apr  7 2006 Dan Williams <dcbw at redhat.com> - 3.10.0-2
- Fix crash with IM enabled

* Mon Mar 13 2006 Ray Strode <rstrode at redhat.com> - 3.10.0-1
- Update to 3.10.0

* Mon Feb 13 2006 Matthias Clasen <mclasen at redhat.com> - 3.9.91-1
- Update to 3.9.91

* Fri Feb 10 2006 Jesse Keating <jkeating at redhat.com> - 3.9.90-3.2
- bump again for double-long bug on ppc(64)

* Tue Feb 07 2006 Jesse Keating <jkeating at redhat.com> - 3.9.90-3.1
- rebuilt for new gcc4.1 snapshot and glibc changes

* Tue Jan 31 2006 Matthias Clasen <mclasen at redhat.com> - 3.9.90-3
- Actually apply the patch

* Tue Jan 31 2006 Matthias Clasen <mclasen at redhat.com> - 3.9.90-2
- Fix a crash

* Mon Jan 30 2006 David Malcolm <dmalcolm at redhat.com> - 3.9.90-1
- 3.9.90

* Wed Jan 25 2006 David Malcolm <dmalcolm at redhat.com> - 3.9.5-1
- 3.9.5
- be more explicit about packaged bonobo server and so files, relying less on 
  globbing

* Thu Jan 19 2006 Ray Strode <rstrode at redhat.com> - 3.9.4-3
- s/sed -ie/sed -i -e/

* Thu Jan 19 2006 Ray Strode <rstrode at redhat.com> - 3.9.4-3
- fix broken fix in 3.9.4-2

* Thu Jan 19 2006 Ray Strode <rstrode at redhat.com> - 3.9.4-2
- fix multlib shlib bonobo problem (bug 156982)

* Tue Jan  3 2006 David Malcolm <dmalcolm at redhat.com> - 3.9.4-1
- 3.9.4

* Mon Dec 19 2005 David Malcolm <dmalcolm at redhat.com> - 3.9.3-1
- 3.9.3

* Fri Dec 09 2005 Jesse Keating <jkeating at redhat.com>
- rebuilt

* Tue Dec  6 2005 David Malcolm <dmalcolm at redhat.com> - 3.9.2-1
- 3.9.2

* Tue Nov 29 2005 David Malcolm <dmalcolm at redhat.com> - 3.8.2-1
- 3.8.2

* Thu Nov 10 2005 David Malcolm <dmalcolm at redhat.com> - 3.8.1-2
- Remove static libraries; rewrite specfile to be more explicit about the
  package payload (#172883)

* Tue Oct  4 2005 David Malcolm <dmalcolm at redhat.com> - 3.8.1-1
- 3.8.1

* Tue Sep  6 2005 David Malcolm <dmalcolm at redhat.com> - 3.8.0-1
- 3.8.0

* Tue Aug 23 2005 David Malcolm <dmalcolm at redhat.com> - 3.7.7-1
- 3.7.7

* Fri Aug 12 2005 David Malcolm <dmalcolm at redhat.com> - 3.7.6-2
- Mark libdir/gtkhtml as being owned by the package (#165771)

* Tue Aug  9 2005 David Malcolm <dmalcolm at redhat.com> - 3.7.6-1
- 3.7.6

* Tue Jul 26 2005 David Malcolm <dmalcolm at redhat.com> - 3.7.5-4
- actually add patch to CVS this time

* Tue Jul 26 2005 David Malcolm <dmalcolm at redhat.com> - 3.7.5-3
- Added patch to use pango for cursor navigation and deletion, fixing problems
  with indic scripts (#129212)

* Mon Jul 25 2005 David Malcolm <dmalcolm at redhat.com> - 3.7.5-2
- update gtkhtml_major from 3.6 to 3.8

* Mon Jul 25 2005 David Malcolm <dmalcolm at redhat.com> - 3.7.5-1
- 3.7.5

* Mon Apr 11 2005 David Malcolm <dmalcolm at redhat.com> - 3.6.2-1
- 3.6.2

* Thu Mar 17 2005 David Malcolm <dmalcolm at redhat.com> - 3.6.1-1
- 3.6.1

* Wed Mar  9 2005 David Malcolm <dmalcolm at redhat.com> - 3.6.0-2
- rebuild

* Tue Mar  8 2005 David Malcolm <dmalcolm at redhat.com> - 3.6.0-1
- 3.6.0

* Tue Mar  1 2005 David Malcolm <dmalcolm at redhat.com> - 3.5.7-1
- 3.5.7

* Tue Feb  8 2005 David Malcolm <dmalcolm at redhat.com> - 3.5.6-2
- Changed deprecated "Copyright" directive into a "License" directive
- License directive now reads "LGPL/GPL", rather than "LGPL", reflecting comment in README file

* Tue Feb  8 2005 David Malcolm <dmalcolm at redhat.com> - 3.5.6-1
- 3.5.6

* Tue Feb  1 2005 David Malcolm <dmalcolm at redhat.com> - 3.5.5-1
- 3.5.5

* Wed Jan 26 2005 David Malcolm <dmalcolm at redhat.com> - 3.5.4-1
- Upgrade to 3.5.4
- Update gtkhtml_major from 3.1 to 3.6 to locate translations
- Temporarily remove IM patch

* Tue Sep 21 2004 Owen Taylor <otaylor at redhat.com> - 3.3.2-2
- Add a patch to fix input method commit issues (#Bug 130751)

* Thu Sep 16 2004 Owen Taylor <otaylor at redhat.com> - 3.3.2-1
- Upgrade to 3.3.2 (Fixes tab display, #132208, ordering
  issues with IM preedit #130751, Leon Ho)

* Fri Sep  3 2004 Owen Taylor <otaylor at redhat.com> - 3.3.1-1
- Upgrade to 3.3.1, includes GtkFileChoose support (#130039)

* Fri Aug 13 2004 Tim Waugh <twaugh at redhat.com> - 3.3.0-3
- Prevent a crash (bug #129844).

* Mon Aug  9 2004 Owen Taylor <otaylor at redhat.com> - 3.3.0-2
- Fix a problem where preformatted text wrapped at column 0

* Wed Aug  4 2004 Owen Taylor <otaylor at redhat.com> - 3.3.0-1
- Upgrade to 3.3.0 (gnome-2-8-devel branch)

* Mon Jul 26 2004 David Malcolm <dmalcolm at redhat.com>
- rebuilt

* Thu Jul 22 2004 David Malcolm <dmalcolm at redhat.com>
- rebuilt

* Thu Jul 22 2004 David Malcolm <dmalcolm at redhat.com>
- rebuilt

* Thu Jul 22 2004 David Malcolm <dmalcolm at redhat.com>
- rebuilt

* Tue Jul 20 2004 David Malcolm <dmalcolm at redhat.com> - 3.1.18-1
- 3.1.18

* Thu Jul  8 2004 David Malcolm <dmalcolm at redhat.com>
- rebuilt

* Wed Jul  7 2004 David Malcolm <dmalcolm at redhat.com>
- rebuilt

* Tue Jul  6 2004 David Malcolm <dmalcolm at redhat.com> - 3.1.17-1
- 3.1.17

* Tue Jun 15 2004 Elliot Lee <sopwith at redhat.com>
- rebuilt

* Mon Jun  7 2004 David Malcolm <dmalcolm at redhat.com> - 3.1.16-2
- rebuilt

* Fri Jun  4 2004 David Malcolm <dmalcolm at redhat.com> - 3.1.16-1
- 3.1.16

* Fri May 21 2004 David Malcolm <dmalcolm at redhat.com> - 3.1.14-2
- rebuilt

* Thu May 20 2004 David Malcolm <dmalcolm at redhat.com> - 3.1.14-1
- 3.1.14

* Tue Apr 20 2004 David Malcolm <dmalcolm at redhat.com> - 3.1.12-1
- 3.1.12

* Wed Mar 10 2004 Jeremy Katz <katzj at redhat.com> - 3.1.9-1
- 3.1.9

* Tue Mar 02 2004 Elliot Lee <sopwith at redhat.com>
- rebuilt

* Tue Feb 17 2004 Jeremy Katz <katzj at redhat.com> - 3.1.8-1
- 3.1.8

* Fri Feb 13 2004 Elliot Lee <sopwith at redhat.com>
- rebuilt

* Tue Jan 27 2004 Jeremy Katz <katzj at redhat.com> - 3.1.7-1
- 3.1.7

* Wed Jan 14 2004 Jeremy Katz <katzj at redhat.com> 3.1.6-0
- update to 3.1.6

* Sat Jan  3 2004 Jeremy Katz <katzj at redhat.com> 3.1.5-0
- update to 3.1.5

* Thu Sep 25 2003 Jeremy Katz <katzj at redhat.com> 3.0.9-5
- rebuild

* Thu Sep 25 2003 Jeremy Katz <katzj at redhat.com> 3.0.9-4
- add patch for XIM (#91481)

* Tue Sep 23 2003 Jeremy Katz <katzj at redhat.com> 3.0.9-3
- rebuild

* Fri Sep 19 2003 Jeremy Katz <katzj at redhat.com> 3.0.9-2
- add patch to fix crash on ia64

* Fri Sep 19 2003 Jeremy Katz <katzj at redhat.com> 3.0.9-1
- 3.0.9

* Mon Sep  8 2003 Jeremy Katz <katzj at redhat.com> 
- add some buildrequires (#103901)

* Thu Sep  4 2003 Jeremy Katz <katzj at redhat.com> 3.0.8-3
- patch from upstream copy for new libbonobo oddities (#103730)

* Mon Aug  4 2003 Jeremy Katz <katzj at redhat.com> 3.0.8-1
- 3.0.8

* Thu Jul 10 2003 Jeremy Katz <katzj at redhat.com> 3.0.7-1
- 3.0.7

* Wed Jun 11 2003 Jeremy Katz <katzj at redhat.com> 
- add some buildrequires (#97181)

* Tue Jun 10 2003 Jeremy Katz <katzj at redhat.com> 3.0.5-2
- rebuild

* Mon Jun  9 2003 Jeremy Katz <katzj at redhat.com> 3.0.5-1
- 3.0.5

* Wed Jun 5 2003 Elliot Lee <sopwith at redhat.com>
- rebuilt

* Thu Jun  5 2003 Jeremy Katz <katzj at redhat.com> 3.0.4-3
- rebuild

* Mon May 26 2003 Jeremy Katz <katzj at redhat.com> 3.0.4-2
- rebuild to fix deps

* Sun May 25 2003 Jeremy Katz <katzj at redhat.com> 3.0.4-1
- 3.0.4

* Tue May  6 2003 Jeremy Katz <katzj at redhat.com> 3.0.3-1
- 3.0.3

* Wed Apr 16 2003 Jeremy Katz <katzj at redhat.com> 3.0.2-2
- libtool's revenge

* Wed Apr 16 2003 Jeremy Katz <katzj at redhat.com> 3.0.2-1
- update to 3.0.2

* Sun Apr  6 2003 Jeremy Katz <katzj at redhat.com> 1.1.9-1
- update to 1.1.9

* Mon Mar 24 2003 Jeremy Katz <katzj at redhat.com> 1.1.8-6
- rebuild for new gal

* Mon Feb 24 2003 Elliot Lee <sopwith at redhat.com> 1.1.8-5
- debuginfo rebuild

* Thu Feb 20 2003 Jeremy Katz <katzj at redhat.com> 1.1.8-4
- gtkhtml capplet doesn't need to be in the menus; it's configurable 
  from within evolution

* Mon Feb 10 2003 Akira TAGOH <tagoh at redhat.com> 1.1.8-3
- don't use fontset as default. (#83899)
- improve the default font for CJK.

* Sat Feb  8 2003 Akira TAGOH <tagoh at redhat.com> 1.1.8-2
- hack to modify po dynamically to add currect XLFD for CJK.
- re-enable patches.

* Fri Feb  7 2003 Jeremy Katz <katzj at redhat.com> 1.1.8-1
- 1.1.8
- disable tagoh's patch for now.  it's not applied upstream and ends up 
  backing out some translation changes

* Fri Feb  7 2003 Akira TAGOH <tagoh at redhat.com> 1.1.7-4
- gtkhtml-1.1.7-fixfont.patch: applied to allow fontset by default.
- gtkhtml-po.tar.bz2: to changes default display/print fonts for CJK.
  perhaps it should be removed when the upstream will releases the next version.
- gtkhtml-1.1.7-domain.patch: define GNOME_EXPLICIT_TRANSLATION_DOMAIN as gtkhtml-1.1.

* Wed Feb  5 2003 Bill Nottingham <notting at redhat.com> 1.1.7-2
- fix some spewage to stdout/stderr

* Wed Jan 22 2003 Tim Powers <timp at redhat.com>
- rebuilt

* Fri Dec 13 2002 Jeremy Katz <katzj at redhat.com> 1.1.7-1
- update to 1.1.7

* Tue Nov 12 2002 Jeremy Katz <katzj at redhat.com> 1.1.6-1
- update to 1.1.6

* Thu Nov  7 2002 Jeremy Katz <katzj at redhat.com> 1.1.5-3
- rebuild to really fix Xlib paths now that gnome-libs is fixed

* Tue Nov  5 2002 Jeremy Katz <katzj at redhat.com> 1.1.5-2
- rebuild to fix Xlib paths in .pc files

* Fri Nov  1 2002 Jeremy Katz <katzj at redhat.com> 1.1.5-1
- update to 1.1.5

* Thu Oct 24 2002 Jeremy Katz <katzj at redhat.com> 1.1.4-1
- remove unwanted files from buildroot
- update to 1.1.4

* Thu Sep 26 2002 Jeremy Katz <katzj at redhat.com>
- make sure we get all of the stuff from %%{_datadir}/gtkhtml-1.1

* Wed Sep 25 2002 Jeremy Katz <katzj at redhat.com>
- update to 1.1.2

* Tue Jul 23 2002 Owen Taylor <otaylor at redhat.com>
- Fix problem with finding the closest size

* Fri Jun 21 2002 Tim Powers <timp at redhat.com>
- automated rebuild

* Wed Jun 19 2002 Jeremy Katz <katzj at redhat.com>
- update to 1.0.4
- remove .la files

* Thu May 23 2002 Tim Powers <timp at redhat.com>
- automated rebuild

* Tue May 14 2002 Jeremy Katz <katzj at redhat.com>
- tweak buildrequires for libcapplet0-devel

* Tue Mar 19 2002 Jeremy Katz <katzj at redhat.com>
- update to gtkhtml 1.0.2

* Thu Mar  7 2002 Jeremy Katz <katzj at redhat.com>
- remove superflous capplet entry (#59698)

* Mon Jan 14 2002 Jeremy Katz <katzj at redhat.com>
- rebuild to get rid of ridiculous libgal18 linkage

* Sat Jan 12 2002 Jeremy Katz <katzj at redhat.com>
- update to 1.0.1

* Sun Dec  2 2001 Jeremy Katz <katzj at redhat.com>
- update to 1.0.0

* Sat Nov 17 2001 Jeremy Katz <katzj at redhat.com>
- update to 0.16.1

* Mon Nov  5 2001 Jeremy Katz <katzj at redhat.com>
- updated to 0.16

* Tue Oct 23 2001 Havoc Pennington <hp at redhat.com>
- 0.15

* Thu Oct  4 2001 Havoc Pennington <hp at redhat.com>
- 0.14
- remove --without-bonobo
- langify

* Mon Aug 20 2001 Alexander Larsson <alexl at redhat.com> 0.9.2-9
- Moved gnome-conf file to the devel package
- Fixes SHOULD-FIX bug #49796

* Mon Jul 30 2001 Alexander Larsson <alexl at redhat.com> 
- Added dependencies on -devel packages from the gtkhtml-devel package

* Fri Jul 20 2001 Alexander Larsson <alexl at redhat.com>
- Add more build dependencies

* Thu Jul 17 2001 Bill Nottingham <notting at redhat.com>
- fix devel package requirements

* Sat Jul  7 2001 Tim Powers <timp at redhat.com>
- changed bad groups
- laguified package

* Tue Jul 03 2001 Havoc Pennington <hp at redhat.com>
- fix X11/libraries -> X11/Libraries, #47137 

* Wed Jun 13 2001 Bill Nottingham <notting at redhat.com>
- fix brokenness due to gal damage

* Wed Jun  6 2001 Bill Nottingham <notting at redhat.com>
- adapt included specfile


Index: .cvsignore
===================================================================
RCS file: /cvs/extras/rpms/gtkhtml38/devel/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore	13 Mar 2007 23:02:29 -0000	1.1
+++ .cvsignore	14 Mar 2007 01:28:08 -0000	1.2
@@ -0,0 +1 @@
+gtkhtml-3.12.3.tar.bz2


Index: sources
===================================================================
RCS file: /cvs/extras/rpms/gtkhtml38/devel/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sources	13 Mar 2007 23:02:29 -0000	1.1
+++ sources	14 Mar 2007 01:28:08 -0000	1.2
@@ -0,0 +1 @@
+b580590014988b02e51b66be65319570  gtkhtml-3.12.3.tar.bz2




More information about the fedora-extras-commits mailing list