]> git.lyx.org Git - features.git/commitdiff
some cursor correctiosn when closing a collapsable inset
authorAndré Pönitz <poenitz@gmx.net>
Mon, 10 Nov 2003 14:29:39 +0000 (14:29 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Mon, 10 Nov 2003 14:29:39 +0000 (14:29 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8070 a592a061-630c-0410-9148-cb99ea01b6c8

src/BufferView_pimpl.C
src/dispatchresult.h
src/insets/insetcollapsable.C

index d0213c2cbfb84a5c92736ed9a23e208c08ee1f12..8fd5b93286c68ff256e48086a261fd514c152060 100644 (file)
@@ -948,12 +948,25 @@ bool BufferView::Pimpl::workAreaDispatch(FuncRequest const & cmd)
                        if (res.update())
                                bv_->update();
                        res.update(false);
+                       switch (res.val()) {
+                               case FINISHED:
+                               case FINISHED_RIGHT:
+                               case FINISHED_UP: 
+                               case FINISHED_DOWN:
+                                       theTempCursor.pop();
+                                       bv_->cursor() = theTempCursor;
+                                       bv_->cursor().innerText()->setCursorFromCoordinates(cmd.x, cmd.y);
+                                       return true;
+                               default:
+                                       lyxerr << "not dispatched by inner inset val: " << res.val() << endl;
+                                       break;
+                       }
                }
 
                // otherwise set cursor to surrounding LyXText
                if (!res.dispatched()) {
                        lyxerr << "cursor is: " << bv_->cursor() << endl;
-                       lyxerr << "dispatching to surrounding LyXText "
+                       lyxerr << "dispatching " << cmd1 << " to surrounding LyXText "
                                << bv_->cursor().innerText() << endl;
                        bv_->cursor().innerText()->dispatch(cmd1);
                        //return DispatchResult(true, true);
index 4b1e8c859c1c8a3833ef921042c7bb5e84da33b7..19aa2b979c44ec0564fad1bb5a0fe6c147f57090 100644 (file)
@@ -25,8 +25,8 @@
                        the inset.
        FINISHED_DOWN       = FINISHED, but move the cursor DOWN from
                        the inset.
-       FINISHED_POP       = FINISHED, but move the cursor DOWN from
-                       the inset.
+       FINISHED_POP       = FINISHED, but move the cursor out the inset
+                       (possibly more than one level)
        UNDISPATCHED        = the action was not catched, it should be
                        dispatched by lower level insets
 */
index 1c86249bc0d093dcd494040657ff894ff2687449..c129f3c96711a46f402471dbeb6e8c4a73329523 100644 (file)
@@ -192,43 +192,42 @@ FuncRequest InsetCollapsable::adjustCommand(FuncRequest const & cmd)
 
 DispatchResult InsetCollapsable::lfunMouseRelease(FuncRequest const & cmd)
 {
-       DispatchResult result(true, true);
        BufferView * bv = cmd.view();
 
        if (cmd.button() == mouse_button::button3) {
                lyxerr << "InsetCollapsable::lfunMouseRelease 0" << endl;
                if (hitButton(cmd))
                        showInsetDialog(bv);
-       } else {
-               if (collapsed_) {
-                       lyxerr << "InsetCollapsable::lfunMouseRelease 1" << endl;
-                       collapsed_ = false;
-                       edit(bv, true);
-                       bv->buffer()->markDirty();
-                       bv->update();
-                       return result;
-               }
+               return DispatchResult(true, true);
+       }
+
+       if (collapsed_) {
+               lyxerr << "InsetCollapsable::lfunMouseRelease 1" << endl;
+               collapsed_ = false;
+               edit(bv, true);
+               bv->buffer()->markDirty();
+               bv->update();
+               return DispatchResult(true, true);
+       }
 
-               if (hitButton(cmd)) {
-                       if (collapsed_) {
-                               lyxerr << "InsetCollapsable::lfunMouseRelease 2" << endl;
-                               collapsed_ = false;
-                       } else {
-                               collapsed_ = true;
-                               result.update(true);
-                               result.val(FINISHED_RIGHT);
-                               return result;
-                       }
-                       result.update(true);
+       if (hitButton(cmd)) {
+               if (!collapsed_) {
+                       collapsed_ = true;
+                       lyxerr << "InsetCollapsable::lfunMouseRelease 2" << endl;
                        bv->update();
-                       bv->buffer()->markDirty();
-               } else if (!collapsed_ && cmd.y > button_dim.y2) {
-                       lyxerr << "InsetCollapsable::lfunMouseRelease 3" << endl;
-                       result = inset.dispatch(adjustCommand(cmd));
+                       return DispatchResult(false, FINISHED_RIGHT);
                }
+               collapsed_ = false;
+               bv->update();
+               bv->buffer()->markDirty();
+               lyxerr << "InsetCollapsable::lfunMouseRelease 3" << endl;
+       } else if (!collapsed_ && cmd.y > button_dim.y2) {
+               lyxerr << "InsetCollapsable::lfunMouseRelease 4" << endl;
+               return inset.dispatch(adjustCommand(cmd));
        }
-       lyxerr << "InsetCollapsable::lfunMouseRelease 4" << endl;
-       return result;
+
+       lyxerr << "InsetCollapsable::lfunMouseRelease 5" << endl;
+       return DispatchResult(true, true);
 }