Index: gtkhtml/ChangeLog
===================================================================
--- gtkhtml/ChangeLog	(revision 9148)
+++ gtkhtml/ChangeLog	(working copy)
@@ -1,3 +1,12 @@
+2009-02-20  Milan Crha  <mcrha@redhat.com>
+
+	** Fix for bug #494986
+
+	* gtkhtml-private.h: (struct _GtkHTMLPrivate):
+	* gtkhtml.c: (idle_handler), (html_engine_draw_pending_cb),
+	(button_release_event), (gtk_html_init):
+	Do not centre to cursor position on click over URL and draw event.
+
 2009-02-18  Matthew Barnes  <mbarnes@redhat.com>
 
 	* htmlenum.c:
Index: gtkhtml/gtkhtml-private.h
===================================================================
--- gtkhtml/gtkhtml-private.h	(revision 9148)
+++ gtkhtml/gtkhtml-private.h	(working copy)
@@ -36,6 +36,7 @@ struct _GtkHTMLPrivate {
 	GtkHTMLFontStyle insertion_font_style;
 
 	gboolean update_styles;
+	gboolean skip_update_cursor;
 
 	gint selection_type;
 
Index: gtkhtml/gtkhtml.c
===================================================================
--- gtkhtml/gtkhtml.c	(revision 9148)
+++ gtkhtml/gtkhtml.c	(working copy)
@@ -379,21 +379,27 @@ idle_handler (gpointer data)
 {
 	GtkHTML *html;
 	HTMLEngine *engine;
+	gboolean also_update_cursor;
 
 	html = GTK_HTML (data);
 	engine = html->engine;
 
+	also_update_cursor = !html->priv->skip_update_cursor;
+
 	if (html->engine->thaw_idle_id == 0 && !html_engine_frozen (html->engine))
 		html_engine_flush_draw_queue (engine);
 
-	gtk_html_adjust_cursor_position (html);
-
+	if (also_update_cursor)
+		gtk_html_adjust_cursor_position (html);
 
  	html->priv->idle_handler_id = 0;
+	html->priv->skip_update_cursor = FALSE;
 
-	while (html->iframe_parent) {
-		html = GTK_HTML (html->iframe_parent);
-		gtk_html_adjust_cursor_position (html);
+	if (also_update_cursor) {
+		while (html->iframe_parent) {
+			html = GTK_HTML (html->iframe_parent);
+			gtk_html_adjust_cursor_position (html);
+		}
 
 	}
 	return FALSE;
@@ -495,6 +501,7 @@ html_engine_draw_pending_cb (HTMLEngine 
 	GtkHTML *html;
 
 	html = GTK_HTML (data);
+	html->priv->skip_update_cursor = TRUE;
 	queue_draw (html);
 }
 
@@ -2040,6 +2047,8 @@ button_release_event (GtkWidget *initial
 				if (HTML_IS_TEXT (focus_object))
 					html_text_set_link_visited (HTML_TEXT (focus_object), (gint) offset, html->engine, TRUE);
 			}
+
+			html->priv->skip_update_cursor = TRUE;
 		}
 	}
 
@@ -3407,6 +3416,7 @@ gtk_html_init (GtkHTML* html)
 	html->priv = g_new0 (GtkHTMLPrivate, 1);
 	html->priv->idle_handler_id = 0;
 	html->priv->scroll_timeout_id = 0;
+	html->priv->skip_update_cursor = FALSE;
 	html->priv->paragraph_style = GTK_HTML_PARAGRAPH_STYLE_NORMAL;
 	html->priv->paragraph_alignment = GTK_HTML_PARAGRAPH_ALIGNMENT_LEFT;
 	html->priv->paragraph_indentation = 0;
