Index: src/ChangeLog
===================================================================
--- src/ChangeLog	(revision 8442)
+++ src/ChangeLog	(working copy)
@@ -1,3 +1,11 @@
+2007-04-14  Yi Jin  <Yi.Jin@sun.com>
+
+	* gtkhtml-enums.h:
+	* gtkhtml.c: (cursor_move), (add_bindings):
+	Fixes bug #347347.
+	Make message "object:text-caret-moved" generated when 
+	user hits left/right key with shift key held down.
+
 2007-04-03  Sankar P  <psankar@novell.com>
 
 	* htmlobject.c: (html_object_get_cursor):
Index: src/gtkhtml-enums.h
===================================================================
--- src/gtkhtml-enums.h	(revision 8442)
+++ src/gtkhtml-enums.h	(working copy)
@@ -233,7 +233,8 @@
 	GTK_HTML_CURSOR_SKIP_ONE,
 	GTK_HTML_CURSOR_SKIP_WORD,
 	GTK_HTML_CURSOR_SKIP_PAGE,
-	GTK_HTML_CURSOR_SKIP_ALL
+	GTK_HTML_CURSOR_SKIP_ALL,
+	GTK_HTML_CURSOR_SKIP_NONE
 } GtkHTMLCursorSkipType;
 
 typedef enum {
Index: src/gtkhtml.c
===================================================================
--- src/gtkhtml.c	(revision 8442)
+++ src/gtkhtml.c	(working copy)
@@ -4503,6 +4503,11 @@
 	if (!html->engine->caret_mode && !html_engine_get_editable (html->engine))
 		return;
 
+	if (skip == GTK_HTML_CURSOR_SKIP_NONE) {
+		g_signal_emit (GTK_HTML (html), signals [CURSOR_CHANGED], 0);
+		return;
+	}
+	
 	if (html->engine->selection_mode) {
 		if (!html->engine->mark)
 			html_engine_set_mark (html->engine);
@@ -5265,10 +5270,12 @@
 	BMOVE (GDK_CONTROL_MASK, KP_Left,  LEFT,  WORD);
 	BMOVE (GDK_CONTROL_MASK, Left,     LEFT,  WORD);
 	BMOVE (GDK_MOD1_MASK,    Left,     LEFT,  WORD);
+	BMOVE (GDK_SHIFT_MASK, Left,     LEFT,  NONE);
 
 	BMOVE (GDK_CONTROL_MASK, KP_Right, RIGHT, WORD);
 	BMOVE (GDK_CONTROL_MASK, Right,    RIGHT, WORD);
 	BMOVE (GDK_MOD1_MASK,    Right,    RIGHT, WORD);
+	BMOVE (GDK_SHIFT_MASK, Right,    RIGHT ,  NONE);
 
 	BMOVE (0, Page_Up,       UP,   PAGE);
 	BMOVE (0, KP_Page_Up,    UP,   PAGE);
