]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
scons/SConstruct: remove non-existent path to make "update_po" work
[lyx.git] / src / Text3.cpp
index a6a6820ba57b0be8c25a830e92b93c8ab3a0c98b..aa31f32932d26cfc176c226a550d247fa833ec64 100644 (file)
@@ -381,15 +381,12 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                //lyxerr << BOOST_CURRENT_FUNCTION
                //       << " LFUN_CHAR_FORWARD[SEL]:\n" << cur << endl;
                needsUpdate |= cur.selHandle(cmd.action == LFUN_CHAR_FORWARD_SELECT);
-               if (reverseDirectionNeeded(cur))
-                       needsUpdate |= cursorLeft(cur);
-               else
-                       needsUpdate |= cursorRight(cur);
+               needsUpdate |= cursorForward(cur);
 
                if (!needsUpdate && oldTopSlice == cur.top()
                                && cur.boundary() == oldBoundary) {
                        cur.undispatched();
-                       cmd = FuncRequest(LFUN_FINISHED_RIGHT);
+                       cmd = FuncRequest(LFUN_FINISHED_FORWARD);
                }
                break;
 
@@ -397,15 +394,40 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_CHAR_BACKWARD_SELECT:
                //lyxerr << "handle LFUN_CHAR_BACKWARD[_SELECT]:\n" << cur << endl;
                needsUpdate |= cur.selHandle(cmd.action == LFUN_CHAR_BACKWARD_SELECT);
-               if (reverseDirectionNeeded(cur))
-                       needsUpdate |= cursorRight(cur);
-               else
-                       needsUpdate |= cursorLeft(cur);
+               needsUpdate |= cursorBackward(cur);
 
                if (!needsUpdate && oldTopSlice == cur.top()
                        && cur.boundary() == oldBoundary) {
                        cur.undispatched();
-                       cmd = FuncRequest(LFUN_FINISHED_LEFT);
+                       cmd = FuncRequest(LFUN_FINISHED_BACKWARD);
+               }
+               break;
+
+       case LFUN_CHAR_LEFT:
+       case LFUN_CHAR_LEFT_SELECT:
+               //FIXME: for visual cursor, really move left
+               if (reverseDirectionNeeded(cur)) {
+                       lyx::dispatch(FuncRequest(
+                               cmd.action == LFUN_CHAR_LEFT_SELECT ? 
+                                       LFUN_CHAR_FORWARD_SELECT : LFUN_CHAR_FORWARD));
+               } else {
+                       lyx::dispatch(FuncRequest(
+                               cmd.action == LFUN_CHAR_LEFT_SELECT ? 
+                                       LFUN_CHAR_BACKWARD_SELECT : LFUN_CHAR_BACKWARD));
+               }
+               break;
+
+       case LFUN_CHAR_RIGHT:
+       case LFUN_CHAR_RIGHT_SELECT:
+               //FIXME: for visual cursor, really move right
+               if (reverseDirectionNeeded(cur)) {
+                       lyx::dispatch(FuncRequest(
+                               cmd.action == LFUN_CHAR_RIGHT_SELECT ? 
+                                       LFUN_CHAR_BACKWARD_SELECT : LFUN_CHAR_BACKWARD));
+               } else {
+                       lyx::dispatch(FuncRequest(
+                               cmd.action == LFUN_CHAR_RIGHT_SELECT ? 
+                                       LFUN_CHAR_FORWARD_SELECT : LFUN_CHAR_FORWARD));
                }
                break;
 
@@ -536,8 +558,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                // Reverse the effect of LFUN_BREAK_PARAGRAPH_SKIP.
                if (!cur.selection()) {
                        if (cur.pos() == cur.lastpos()) {
-                               cursorRight(cur);
-                               cursorLeft(cur);
+                               cursorForward(cur);
+                               cursorBackward(cur);
                        }
                        erase(cur);
                        cur.resetAnchor();
@@ -1390,6 +1412,16 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                }
                break;
 
+       case LFUN_FINISHED_BACKWARD:
+               LYXERR(Debug::DEBUG) << "handle LFUN_FINISHED_BACKWARD:\n" << cur << endl;
+               break;
+
+       case LFUN_FINISHED_FORWARD:
+               LYXERR(Debug::DEBUG) << "handle LFUN_FINISHED_FORWARD:\n" << cur << endl;
+               ++cur.pos();
+               cur.setCurrentFont();
+               break;
+
        case LFUN_LAYOUT_PARAGRAPH: {
                string data;
                params2string(cur.paragraph(), data);
@@ -1442,7 +1474,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        breakParagraph(cur);
 
                        if (cur.lastpos() != 0) {
-                               cursorLeft(cur);
+                               cursorBackward(cur);
                                breakParagraph(cur);
                        }
 
@@ -1510,7 +1542,9 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        cur.selection() = false;
                } else {
                        cur.undispatched();
-                       cmd = FuncRequest(LFUN_FINISHED_RIGHT);
+                       // This used to be LFUN_FINISHED_RIGHT, I think FORWARD is more
+                       // correct, but I'm not 100% sure -- dov, 071019
+                       cmd = FuncRequest(LFUN_FINISHED_FORWARD);
                }
                break;
 
@@ -1697,7 +1731,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                break;
        case LFUN_BRANCH_INSERT:
                code = BRANCH_CODE;
-               if (cur.buffer().getMasterBuffer()->params().branchlist().empty())
+               if (cur.buffer().masterBuffer()->params().branchlist().empty())
                        enable = false;
                break;
        case LFUN_LABEL_INSERT:
@@ -1708,7 +1742,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                break;
        case LFUN_OPTIONAL_INSERT:
                code = OPTARG_CODE;
-               enable = numberOfOptArgs(cur.paragraph())
+               enable = cur.paragraph().numberOfOptArgs()
                        < cur.paragraph().layout()->optionalargs;
                break;
        case LFUN_ENVIRONMENT_INSERT:
@@ -1823,11 +1857,12 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_INSET_DISSOLVE:
                if (!cmd.argument().empty()) {
                        InsetLayout il = cur.inset().getLayout(cur.buffer().params());
-                       enable = (cur.inset().lyxCode() == FLEX_CODE) 
-                             && (il.lyxtype == to_utf8(cmd.argument()));
-               } else
+                       enable = cur.inset().lyxCode() == FLEX_CODE
+                                && il.lyxtype == to_utf8(cmd.argument());
+               } else {
                        enable = !isMainText(cur.bv().buffer()) 
-                               && cur.inset().nargs() == 1;
+                                && cur.inset().nargs() == 1;
+               }
                break;
 
        case LFUN_CHANGE_ACCEPT:
@@ -1850,6 +1885,10 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_CHAR_FORWARD_SELECT:
        case LFUN_CHAR_BACKWARD:
        case LFUN_CHAR_BACKWARD_SELECT:
+       case LFUN_CHAR_LEFT:
+       case LFUN_CHAR_LEFT_SELECT:
+       case LFUN_CHAR_RIGHT:
+       case LFUN_CHAR_RIGHT_SELECT:
        case LFUN_UP:
        case LFUN_UP_SELECT:
        case LFUN_DOWN: