Patch below works for me.

Justification: just because the inset wants to lose the focus lock (FINISHED*) doesn't
mean that the func is DISPATCHED. If this is no good, then we need to split the state
into two, one for FINISHED* and one for (UN)DISPATCHED

thanks
john


Index: lyxfunc.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxfunc.C,v
retrieving revision 1.256
diff -u -r1.256 lyxfunc.C
--- lyxfunc.C   2001/08/19 19:53:54     1.256
+++ lyxfunc.C   2001/08/31 23:03:35
@@ -871,26 +871,23 @@
                                   (result == UpdatableInset::DISPATCHED_NOUPDATE))
                                return string();
                        else if (result == UpdatableInset::FINISHED) {
-                                       if 
(TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
-                                               TEXT()->cursorRight(owner->view());
-                                               moveCursorUpdate(true, false);
-                                               owner->showState();
-                                       }
-                                       return string();
+                               if 
+(TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
+                                       TEXT()->cursorRight(owner->view());
+                                       moveCursorUpdate(true, false);
+                                       owner->showState();
+                               }
                        } 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());
@@ -898,7 +895,6 @@
                                        TEXT()->cursorRight(owner->view());
                                moveCursorUpdate(true, false);
                                owner->showState();
-                               return string();
                        } else {
                                //setMessage(N_("Text mode"));
                                switch (action) {

Reply via email to