]> git.lyx.org Git - features.git/blobdiff - src/lyxfunc.C
Added new FINISED states FINISHED_RIGHT, FINISHED_UP, FINISHED_DOWN.
[features.git] / src / lyxfunc.C
index a95050cc8befdcd394011bd0edb4f156fdb36f7a..534d64e73741eb2413992bc5d8acbe4505d406c6 100644 (file)
@@ -866,12 +866,40 @@ string const LyXFunc::dispatch(int ac,
                                        inset->edit(owner->view(),slx,sly,0); 
                                return string();
                        } else if (((result=owner->view()->theLockingInset()->
-                                  localDispatch(owner->view(), action,
-                                                argument)) ==
-                                  UpdatableInset::DISPATCHED) ||
-                                  (result == UpdatableInset::DISPATCHED_NOUPDATE))
+                                    localDispatch(owner->view(), action, argument)) ==
+                                   UpdatableInset::DISPATCHED) ||
+                                  (result == UpdatableInset::DISPATCHED_NOUPDATE))
                                return string();
-                       else {
+                       else if (result == UpdatableInset::FINISHED) {
+                                       if (TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
+                                               TEXT()->cursorRight(owner->view());
+                                               moveCursorUpdate(true, false);
+                                               owner->showState();
+                                       }
+                                       return string();
+                       } else if (result == UpdatableInset::FINISHED_RIGHT) {
+                               if (!TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
+                                       TEXT()->cursorRight(owner->view());
+                                       moveCursorUpdate(true, false);
+                                       owner->showState();
+                               }
+                               return string();
+                       } else if (result == UpdatableInset::FINISHED_UP) {
+                               if (TEXT()->cursor.row()->previous()) {
+                                       TEXT()->cursorUp(owner->view());
+                                       moveCursorUpdate(true, false);
+                                       owner->showState();
+                               }
+                               return string();
+                       } else if (result == UpdatableInset::FINISHED_DOWN) {
+                               if (TEXT()->cursor.row()->next())
+                                       TEXT()->cursorDown(owner->view());
+                               else
+                                       TEXT()->cursorRight(owner->view());
+                               moveCursorUpdate(true, false);
+                               owner->showState();
+                               return string();
+                       } else {
                                //setMessage(N_("Text mode"));
                                switch (action) {
                                case LFUN_UNKNOWN_ACTION: