From 2ff4eaba84f8173ad113df39452638626b806f44 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Mon, 17 Nov 2003 14:51:36 +0000 Subject: [PATCH] handle most of InsetText::dispatch() to LyXText::dispatch git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8095 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/insettext.C | 165 ----------------------------------------- src/text3.C | 62 +++------------- 2 files changed, 12 insertions(+), 215 deletions(-) diff --git a/src/insets/insettext.C b/src/insets/insettext.C index f0992c4fe3..ffcfedcfa2 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -431,171 +431,6 @@ DispatchResult InsetText::priv_dispatch(FuncRequest const & cmd, result = DispatchResult(true, true); break; - case LFUN_SELFINSERT: - if (bv->buffer()->isReadonly()) { - // setErrorMessage(N_("Document is read only")); - break; - } - if (!cmd.argument.empty()) { - /* Automatically delete the currently selected - * text and replace it with what is being - * typed in now. Depends on lyxrc settings - * "auto_region_delete", which defaults to - * true (on). */ -#if 0 - // This should not be needed here and is also WRONG! - recordUndo(bv, Undo::INSERT, text_.cursorPar()); -#endif - bv->switchKeyMap(); - - if (lyxrc.auto_region_delete && text_.selection.set()) - text_.cutSelection(false, false); - text_.clearSelection(); - - for (string::size_type i = 0; i < cmd.argument.length(); ++i) - bv->owner()->getIntl().getTransManager(). - TranslateAndInsert(cmd.argument[i], &text_); - } - text_.selection.cursor = text_.cursor; - result.dispatched(true); - result.update(true); - break; - - case LFUN_RIGHT: - result = text_.moveRight(); - finishUndo(); - break; - - case LFUN_LEFT: - finishUndo(); - result = text_.moveLeft(); - break; - - case LFUN_DOWN: - finishUndo(); - result = text_.moveDown(); - break; - - case LFUN_UP: - finishUndo(); - result = text_.moveUp(); - break; - - case LFUN_PRIOR: - if (crow() == text_.firstRow()) { - result.val(FINISHED_UP); - } else { - text_.cursorPrevious(); - text_.clearSelection(); - result.dispatched(true); - } - break; - - case LFUN_NEXT: - if (crow() == text_.lastRow()) { - result.val(FINISHED_DOWN); - } else { - text_.cursorNext(); - text_.clearSelection(); - result.dispatched(true); - } - break; - - case LFUN_BACKSPACE: - if (text_.selection.set()) - text_.cutSelection(true, false); - else - text_.backspace(); -#warning should be also set dispatched here? - result.update(true); - break; - - case LFUN_DELETE: - if (text_.selection.set()) - text_.cutSelection(true, false); - else - text_.Delete(); -#warning should be also set dispatched here? - result.update(true); - break; - - case LFUN_BREAKPARAGRAPH: - if (!autoBreakRows_) { - result.dispatched(true); - result.update(true); - } else { - replaceSelection(bv->getLyXText()); - text_.breakParagraph(paragraphs, 0); -#warning should be also set dispatched here? - result.update(true); - } - break; - - case LFUN_BREAKPARAGRAPHKEEPLAYOUT: - if (!autoBreakRows_) { - result.dispatched(true); - result.update(true); - } else { - replaceSelection(bv->getLyXText()); - text_.breakParagraph(paragraphs, 1); -#warning should be also set dispatched here? - result.update(true); - } - break; - - case LFUN_BREAKLINE: { - if (!autoBreakRows_) { - result.dispatched(true); - result.update(true); - } else { - replaceSelection(bv->getLyXText()); - auto_ptr ins(new InsetNewline); - text_.insertInset(ins.release()); -#warning should be also set dispatched here? - result.update(true); - } - break; - } - - case LFUN_LAYOUT: - // do not set layouts on non breakable textinsets - if (autoBreakRows_) { - string cur_layout = cpar()->layout()->name(); - - // Derive layout number from given argument (string) - // and current buffer's textclass (number). - LyXTextClass const & tclass = - bv->buffer()->params().getLyXTextClass(); - string layout = cmd.argument; - bool hasLayout = tclass.hasLayout(layout); - - // If the entry is obsolete, use the new one instead. - if (hasLayout) { - string const & obs = tclass[layout]->obsoleted_by(); - if (!obs.empty()) - layout = obs; - } - - // see if we found the layout number: - if (!hasLayout) { - FuncRequest lf(LFUN_MESSAGE, N_("Layout ") + cmd.argument + N_(" not known")); - bv->owner()->dispatch(lf); - break; - } - - if (cur_layout != layout) { - cur_layout = layout; - text_.setLayout(layout); - bv->owner()->setLayout(cpar()->layout()->name()); -#warning should be also set dispatched here? - result.update(true); - } - } else { - // reset the layout box - bv->owner()->setLayout(cpar()->layout()->name()); - } - break; - default: result = text_.dispatch(cmd); break; diff --git a/src/text3.C b/src/text3.C index 62fd54a30f..7b4abae39c 100644 --- a/src/text3.C +++ b/src/text3.C @@ -707,63 +707,21 @@ DispatchResult LyXText::dispatch(FuncRequest const & cmd) break; } - case LFUN_RIGHT: { - bool is_rtl = rtl(); - if (!selection.mark()) - clearSelection(); - if (is_rtl) - cursorLeft(false); - if (cursor.pos() < cursorPar()->size() - && cursorPar()->isInset(cursor.pos()) - && isHighlyEditableInset(cursorPar()->getInset(cursor.pos()))) { - InsetOld * tmpinset = cursorPar()->getInset(cursor.pos()); - cmd.message(tmpinset->editMessage()); - tmpinset->edit(bv, !is_rtl); - break; - } - if (!is_rtl) - cursorRight(false); + case LFUN_RIGHT: finishChange(bv); - break; - } + return moveRight(); - case LFUN_LEFT: { - // This is soooo ugly. Isn't it possible to make - // it simpler? (Lgb) - bool const is_rtl = rtl(); - if (!selection.mark()) - clearSelection(); - LyXCursor const cur = cursor; - if (!is_rtl) - cursorLeft(false); - if ((is_rtl || cur != cursor) && // only if really moved! - cursor.pos() < cursorPar()->size() && - cursorPar()->isInset(cursor.pos()) && - isHighlyEditableInset(cursorPar()->getInset(cursor.pos()))) { - InsetOld * tmpinset = cursorPar()->getInset(cursor.pos()); - cmd.message(tmpinset->editMessage()); - tmpinset->edit(bv, is_rtl); - break; - } - if (is_rtl) - cursorRight(false); + case LFUN_LEFT: finishChange(bv); - break; - } + return moveLeft(); case LFUN_UP: - if (!selection.mark()) - clearSelection(); - cursorUp(false); finishChange(bv); - break; + return moveUp(); case LFUN_DOWN: - if (!selection.mark()) - clearSelection(); - cursorDown(false); finishChange(bv); - break; + return moveDown(); case LFUN_UP_PARAGRAPH: if (!selection.mark()) @@ -782,15 +740,19 @@ DispatchResult LyXText::dispatch(FuncRequest const & cmd) case LFUN_PRIOR: if (!selection.mark()) clearSelection(); - cursorPrevious(); finishChange(bv, false); + if (cursorRow() == firstRow()) + return DispatchResult(false, FINISHED_UP); + cursorPrevious(); break; case LFUN_NEXT: if (!selection.mark()) clearSelection(); - cursorNext(); finishChange(bv, false); + if (cursorRow() == lastRow()) + return DispatchResult(false, FINISHED_DOWN); + cursorNext(); break; case LFUN_HOME: -- 2.39.2