+ goto exit_with_message;
+ // If UNDISPATCHED, just soldier on
+ else if (result == UpdatableInset::FINISHED) {
+ if (TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
+ TEXT()->cursorRight(owner->view());
+ moveCursorUpdate(true, false);
+ owner->showState();
+ }
+ goto exit_with_message;
+ } else if (result == UpdatableInset::FINISHED_RIGHT) {
+ if (!TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
+ TEXT()->cursorRight(owner->view());
+ moveCursorUpdate(true, false);
+ owner->showState();
+ }
+ goto exit_with_message;
+ } else if (result == UpdatableInset::FINISHED_UP) {
+ if (TEXT()->cursor.irow()->previous()) {
+#if 1
+ TEXT()->setCursorFromCoordinates(
+ owner->view(), TEXT()->cursor.ix() + inset_x,
+ TEXT()->cursor.iy() -
+ TEXT()->cursor.irow()->baseline() - 1);
+ TEXT()->cursor.x_fix(TEXT()->cursor.x());
+#else
+ TEXT()->cursorUp(owner->view());
+#endif
+ moveCursorUpdate(true, false);
+ owner->showState();
+ } else {
+ owner->view()->update(TEXT(), BufferView::SELECT|BufferView::FITCUR);
+ }
+ goto exit_with_message;
+ } else if (result == UpdatableInset::FINISHED_DOWN) {
+ if (TEXT()->cursor.irow()->next()) {
+#if 1
+ TEXT()->setCursorFromCoordinates(
+ owner->view(), TEXT()->cursor.ix() + inset_x,
+ TEXT()->cursor.iy() -
+ TEXT()->cursor.irow()->baseline() +
+ TEXT()->cursor.irow()->height() + 1);
+ TEXT()->cursor.x_fix(TEXT()->cursor.x());
+#else
+ TEXT()->cursorDown(owner->view());
+#endif
+ } else {
+ TEXT()->cursorRight(owner->view());
+ }
+ moveCursorUpdate(true, false);
+ owner->showState();
+ goto exit_with_message;
+ }
+#warning I am not sure this is still right, please have a look! (Jug 20020417)
+ else { // result == UNDISPATCHED