> I'll wait for others to comment, but surely there is a style problem in your 
> patch.
> Some lines of new code are indented with spaces. I think tabs should be used 
> here.

Sorry about that. I've replaced the offending spaces with tabs now.

Punya
Index: src/insets/InsetTabular.cpp
===================================================================
--- src/insets/InsetTabular.cpp	(revision 35182)
+++ src/insets/InsetTabular.cpp	(working copy)
@@ -3773,7 +3773,15 @@
 	case LFUN_CHAR_RIGHT_SELECT:
 	case LFUN_CHAR_RIGHT:
 	case LFUN_CHAR_LEFT_SELECT:
-	case LFUN_CHAR_LEFT: {
+	case LFUN_CHAR_LEFT:
+	case LFUN_WORD_FORWARD_SELECT:
+	case LFUN_WORD_FORWARD:
+	case LFUN_WORD_BACKWARD_SELECT:
+	case LFUN_WORD_BACKWARD:
+	case LFUN_WORD_LEFT_SELECT:
+	case LFUN_WORD_LEFT:
+	case LFUN_WORD_RIGHT_SELECT:
+	case LFUN_WORD_RIGHT: {
 		// determine whether we move to next or previous cell, where to enter 
 		// the new cell from, and which command to "finish" (i.e., exit the
 		// inset) with:
@@ -3782,12 +3790,16 @@
 		FuncCode finish_lfun;
 
 		if (act == LFUN_CHAR_FORWARD 
-				|| act == LFUN_CHAR_FORWARD_SELECT) {
+				|| act == LFUN_CHAR_FORWARD_SELECT
+				|| act == LFUN_WORD_FORWARD
+				|| act == LFUN_WORD_FORWARD_SELECT) {
 			next_cell = true;
 			finish_lfun = LFUN_FINISHED_FORWARD;
 		}
 		else if (act == LFUN_CHAR_BACKWARD
-				|| act == LFUN_CHAR_BACKWARD_SELECT) {
+				|| act == LFUN_CHAR_BACKWARD_SELECT
+				|| act == LFUN_WORD_BACKWARD
+				|| act == LFUN_WORD_BACKWARD_SELECT) {
 			next_cell = false;
 			finish_lfun = LFUN_FINISHED_BACKWARD;
 		}
@@ -3795,7 +3807,9 @@
 		// table's direction.
 		else {
 			bool const right = act == LFUN_CHAR_RIGHT
-				|| act == LFUN_CHAR_RIGHT_SELECT;
+				|| act == LFUN_CHAR_RIGHT_SELECT
+				|| act == LFUN_WORD_RIGHT
+				|| act == LFUN_WORD_RIGHT_SELECT;
 			next_cell = isRightToLeft(cur) != right;
 			
 			if (lyxrc.visual_cursor)
@@ -3807,7 +3821,11 @@
 		bool const select = act == LFUN_CHAR_FORWARD_SELECT ||
 		    act == LFUN_CHAR_BACKWARD_SELECT ||
 		    act == LFUN_CHAR_RIGHT_SELECT ||
-		    act == LFUN_CHAR_LEFT_SELECT;
+		    act == LFUN_CHAR_LEFT_SELECT ||
+		    act == LFUN_WORD_FORWARD_SELECT ||
+		    act == LFUN_WORD_BACKWARD_SELECT ||
+		    act == LFUN_WORD_RIGHT_SELECT ||
+		    act == LFUN_WORD_LEFT_SELECT;
 
 		// If we have a multicell selection or we're 
 		// not doing some LFUN_*_SELECT thing anyway...
Index: src/Text3.cpp
===================================================================
--- src/Text3.cpp	(revision 35182)
+++ src/Text3.cpp	(working copy)
@@ -819,6 +819,11 @@
 	case LFUN_WORD_FORWARD_SELECT:
 		needsUpdate |= cur.selHandle(cmd.action() == LFUN_WORD_FORWARD_SELECT);
 		needsUpdate |= cursorForwardOneWord(cur);
+		if (!needsUpdate && oldTopSlice == cur.top()
+				&& cur.boundary() == oldBoundary) {
+			cur.undispatched();
+			cmd = FuncRequest(LFUN_FINISHED_FORWARD);
+		}
 		break;
 
 	case LFUN_WORD_LEFT:
@@ -848,6 +853,11 @@
 	case LFUN_WORD_BACKWARD_SELECT:
 		needsUpdate |= cur.selHandle(cmd.action() == LFUN_WORD_BACKWARD_SELECT);
 		needsUpdate |= cursorBackwardOneWord(cur);
+		if (!needsUpdate && oldTopSlice == cur.top()
+				&& cur.boundary() == oldBoundary) {
+			cur.undispatched();
+			cmd = FuncRequest(LFUN_FINISHED_BACKWARD);
+		}
 		break;
 
 	case LFUN_WORD_SELECT: {

Reply via email to