Fix Settings entry for space insets.

* inset/inset.cpp (doDispatch, getStatus): handle LFUN_INSET_TOGGLE.

	* BufferView.cpp (getStatus): cleanup
	(dispatch): do not call Inset::edit() explicitely.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24752 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2008-05-13 14:44:53 +00:00
parent 42d71d632f
commit d16ca201e6
2 changed files with 29 additions and 16 deletions

View File

@ -870,10 +870,9 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd)
case LFUN_NEXT_INSET_TOGGLE:
case LFUN_NEXT_INSET_MODIFY: {
// this is the real function we want to invoke
FuncCode const code =
(cmd.action == LFUN_NEXT_INSET_TOGGLE)
FuncRequest tmpcmd = cmd;
tmpcmd.action = (cmd.action == LFUN_NEXT_INSET_TOGGLE)
? LFUN_INSET_TOGGLE : LFUN_INSET_MODIFY;
FuncRequest const tmpcmd = FuncRequest(code, cmd.argument());
// if there is an inset at cursor, see whether it
// handles the lfun, other start from scratch
Inset * inset = cur.nextInset();
@ -1279,8 +1278,9 @@ bool BufferView::dispatch(FuncRequest const & cmd)
break;
case LFUN_NEXT_INSET_TOGGLE: {
// this is the real function we want to invoke
FuncRequest tmpcmd = FuncRequest(LFUN_INSET_TOGGLE, cmd.origin);
// create the the real function we want to invoke
FuncRequest tmpcmd = cmd;
tmpcmd.action = LFUN_INSET_TOGGLE;
// if there is an inset at cursor, see whether it
// wants to toggle.
Inset * inset = cur.nextInset();
@ -1289,12 +1289,10 @@ bool BufferView::dispatch(FuncRequest const & cmd)
Cursor tmpcur = cur;
tmpcur.pushBackward(*inset);
inset->dispatch(tmpcur, tmpcmd);
if (tmpcur.result().dispatched()) {
if (tmpcur.result().dispatched())
cur.dispatched();
}
} else if (inset->editable() == Inset::IS_EDITABLE) {
inset->edit(cur, true);
}
} else
inset->dispatch(cur, tmpcmd);
}
// if it did not work, try the underlying inset.
if (!inset || !cur.result().dispatched())
@ -1309,8 +1307,9 @@ bool BufferView::dispatch(FuncRequest const & cmd)
}
case LFUN_NEXT_INSET_MODIFY: {
// this is the real function we want to invoke
FuncRequest tmpcmd = FuncRequest(LFUN_INSET_MODIFY, cmd.argument());
// create the the real function we want to invoke
FuncRequest tmpcmd = cmd;
tmpcmd.action = LFUN_INSET_MODIFY;
// if there is an inset at cursor, see whether it
// can be modified.
Inset * inset = cur.nextInset();

View File

@ -210,10 +210,18 @@ void Inset::dispatch(Cursor & cur, FuncRequest & cmd)
}
void Inset::doDispatch(Cursor & cur, FuncRequest &)
void Inset::doDispatch(Cursor & cur, FuncRequest &cmd)
{
cur.noUpdate();
cur.undispatched();
switch (cmd.action) {
case LFUN_INSET_TOGGLE:
edit(cur, true);
cur.dispatched();
break;
default:
cur.noUpdate();
cur.undispatched();
break;
}
}
@ -243,9 +251,15 @@ bool Inset::getStatus(Cursor &, FuncRequest const & cmd,
flag.enabled(false);
return true;
case LFUN_INSET_TOGGLE:
// remove this if we dissociate toggle from edit.
flag.enabled(editable() == IS_EDITABLE);
return true;
default:
return false;
break;
}
return false;
}