From f7a9c1a6bec26d7de9634b49408bdb4ea1345602 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Thu, 6 Nov 2003 10:30:43 +0000 Subject: [PATCH] activeat 'out of sync' message git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8053 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/ParagraphParameters.C | 1 - src/cursor.C | 89 +++++++++++++++++++++------------------ src/cursor.h | 4 +- src/lyxfunc.C | 6 +++ 4 files changed, 56 insertions(+), 44 deletions(-) diff --git a/src/ParagraphParameters.C b/src/ParagraphParameters.C index a087ed44f4..bd329198ac 100644 --- a/src/ParagraphParameters.C +++ b/src/ParagraphParameters.C @@ -29,7 +29,6 @@ #include "frontends/LyXView.h" #include "support/lstrings.h" - #include "support/std_sstream.h" using lyx::support::rtrim; diff --git a/src/cursor.C b/src/cursor.C index d823670c4c..3c472d3a06 100644 --- a/src/cursor.C +++ b/src/cursor.C @@ -50,51 +50,12 @@ std::ostream & operator<<(std::ostream & os, LCursor const & cursor) DispatchResult LCursor::dispatch(FuncRequest const & cmd) { for (int i = data_.size() - 1; i >= 0; --i) { - CursorItem & citem = data_[i]; - + CursorItem const & citem = data_[i]; lyxerr << "trying to dispatch to inset" << citem.inset_ << endl; DispatchResult res = citem.inset_->dispatch(cmd); - lyxerr << " result: " << res.val() << endl; - - switch (res.val()) { - case FINISHED: - pop(); - return DispatchResult(true, true); - - case FINISHED_RIGHT: { - pop(); - //InsetText * inset = static_cast(innerInset()); - //if (inset) - // inset->moveRightIntern(bv_, false, false); - //else - // bv_->text->cursorRight(bv_); - innerText()->cursorRight(bv_); - return DispatchResult(true); - } - - case FINISHED_UP: { - pop(); - //InsetText * inset = static_cast(inset()); - //if (inset) - // result = inset->moveUp(bv); - return DispatchResult(true); - } - - case FINISHED_DOWN: { - pop(); - //InsetText * inset = static_cast(inset()); - //if (inset) - // result = inset->moveDown(bv); - return DispatchResult(true); - } - - default: - break; - } - - lyxerr << "# unhandled result: " << res.val() << endl; + if (handleResult(res)) + return DispatchResult(true, true); } - lyxerr << "trying to dispatch to main text " << bv_->text << endl; DispatchResult res = bv_->text->dispatch(cmd); lyxerr << " result: " << res.val() << endl; @@ -102,6 +63,50 @@ DispatchResult LCursor::dispatch(FuncRequest const & cmd) } +bool LCursor::handleResult(DispatchResult const & res) +{ + lyxerr << "LCursor::handleResult: " << res.val() << endl; + switch (res.val()) { + case FINISHED: + pop(); + return true; + + case FINISHED_RIGHT: { + pop(); + //InsetText * inset = static_cast(innerInset()); + //if (inset) + // inset->moveRightIntern(bv_, false, false); + //else + // bv_->text->cursorRight(bv_); + innerText()->cursorRight(bv_); + return true; + } + + case FINISHED_UP: { + pop(); + //InsetText * inset = static_cast(inset()); + //if (inset) + // result = inset->moveUp(bv); + return true; + } + + case FINISHED_DOWN: { + pop(); + //InsetText * inset = static_cast(inset()); + //if (inset) + // result = inset->moveDown(bv); + return true; + } + + default: + break; + lyxerr << "# unhandled result: " << res.val() << endl; + return false; + } +} + + + LCursor::LCursor(BufferView * bv) : bv_(bv) {} diff --git a/src/cursor.h b/src/cursor.h index d34954d894..2494217206 100644 --- a/src/cursor.h +++ b/src/cursor.h @@ -57,8 +57,10 @@ class LCursor { public: /// LCursor(BufferView * bv); - /// + /// dispatch from innermost inset upwards DispatchResult dispatch(FuncRequest const & cmd); + /// adjust cursor acording to result + bool handleResult(DispatchResult const & res); /// void push(InsetOld *, LyXText *); /// diff --git a/src/lyxfunc.C b/src/lyxfunc.C index 1cf0de8c67..4e20c5fc58 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -882,6 +882,12 @@ void LyXFunc::dispatch(FuncRequest const & func, bool verbose) view()->hideCursor(); #if 1 + if (view()->cursor().innerInset() != view()->theLockingInset()) { + lyxerr << "### CURSOR OUT OF SYNC: tli: " + << view()->theLockingInset() + << "\ncursor: " << view()->cursor() << endl; + } + if (0) { DispatchResult result = view()->cursor().dispatch(FuncRequest(func, view())); -- 2.39.2