Angus Leeming wrote:

> However, note the position of the cursor...

The following works for me (LyXFunc.C):

                case LFUN_ALL_INSETS_TOGGLE: {
                        string action;
                        string const name = split(argument, action, ' ');
                        InsetBase::Code const inset_code =
                                InsetBase::translate(name);

                        LCursor & cur = view()->cursor();
                        FuncRequest fr(LFUN_INSET_TOGGLE, action);

                        InsetIterator it(owner->buffer()->inset());
                        for (; it; ++it) {
                                if (inset_code == InsetBase::NO_CODE
                                    || inset_code == it->lyxCode()) {
                                        it->dispatch(cur, fr);
+                                       if (&cur.inset() == &*it)
+                                               cur.pop();
                                }
                        }
                        break;
                }

Alfredo


Reply via email to