#include "lyxtext.h"
+#include "BranchList.h"
#include "FloatList.h"
#include "FuncStatus.h"
#include "buffer.h"
case LFUN_NEXT_INSET_TOGGLE: {
InsetBase * inset = cur.nextInset();
+ // this is the real function we want to invoke
+ cmd = FuncRequest(LFUN_INSET_TOGGLE);
+ cur.undispatched();
+ // if there is an inset at cursor, see whether it
+ // wants to toggle.
if (inset) {
- cur.clearSelection();
- FuncRequest fr = cmd;
- fr.action = LFUN_INSET_TOGGLE;
- inset->dispatch(cur, fr);
+ LCursor tmpcur = cur;
+ tmpcur.pushLeft(*inset);
+ inset->dispatch(tmpcur, cmd);
+ if (tmpcur.result().dispatched()) {
+ cur.clearSelection();
+ cur.dispatched();
+ }
}
+ // if it did not work, try the underlying inset.
+ if (!cur.result().dispatched())
+ cur.inset().dispatch(cur, cmd);
break;
}
- case LFUN_KEYMAP_TOGGLE:
- cur.clearSelection();
- bv->switchKeyMap();
- break;
-
case LFUN_SPACE_INSERT:
if (cur.paragraph().layout()->free_spacing)
insertChar(cur, ' ');
FuncStatus & flag) const
{
BOOST_ASSERT(cur.text() == this);
+
LyXFont const & font = real_current_font;
bool enable = true;
+ InsetBase::Code code = InsetBase::NO_CODE;
switch (cmd.action) {
enable = changeDepthAllowed(cur, INC_DEPTH);
break;
- case LFUN_INSET_OPTARG:
- enable = numberOfOptArgs(cur.paragraph())
- < cur.paragraph().layout()->optionalargs;
- break;
-
case LFUN_APPENDIX:
flag.setOnOff(cur.paragraph().params().startOfAppendix());
return true;
enable = (cur.paragraph().layout()->labeltype == LABEL_BIBLIO);
break;
-#if 0
- // the functions which insert insets
- InsetBase::Code code = InsetBase::NO_CODE;
- switch (cmd.action) {
case LFUN_DIALOG_SHOW_NEW_INSET:
if (cmd.argument == "bibitem")
code = InsetBase::BIBITEM_CODE;
break;
case LFUN_INSERT_CHARSTYLE:
code = InsetBase::CHARSTYLE_CODE;
- if (buf->params().getLyXTextClass().charstyles().empty())
+ if (cur.buffer().params().getLyXTextClass().charstyles().empty())
enable = false;
break;
case LFUN_INSERT_BOX:
break;
case LFUN_INSERT_BRANCH:
code = InsetBase::BRANCH_CODE;
- if (buf->params().branchlist().empty())
+ if (cur.buffer().getMasterBuffer()->params().branchlist().empty())
enable = false;
break;
case LFUN_INSERT_LABEL:
break;
case LFUN_INSET_OPTARG:
code = InsetBase::OPTARG_CODE;
+ enable = numberOfOptArgs(cur.paragraph())
+ < cur.paragraph().layout()->optionalargs;
break;
case LFUN_ENVIRONMENT_INSERT:
code = InsetBase::BOX_CODE;
if (cur.inTexted())
code = InsetBase::SPACE_CODE;
break;
+
+#ifdef WITH_WARNINGS
+#warning This LFUN is not used anymore and should be nuked (JMarc 29/10/2005)
+#endif
+#if 0
case LFUN_INSET_DIALOG_SHOW: {
InsetBase * inset = cur.nextInset();
enable = inset;
}
break;
}
- default:
- break;
- }
-
- if (code != InsetBase::NO_CODE
- && (cur.empty() || !cur.inset().insetAllowed(code)))
- enable = false;
-
#endif
- case LFUN_DIALOG_SHOW_NEW_INSET:
- case LFUN_INSET_ERT:
- case LFUN_INSERT_BOX:
- case LFUN_INSERT_BRANCH:
- case LFUN_ENVIRONMENT_INSERT:
- case LFUN_INDEX_INSERT:
- case LFUN_INDEX_PRINT:
- case LFUN_TOC_INSERT:
- case LFUN_HTMLURL:
- case LFUN_URL:
- case LFUN_QUOTE:
- case LFUN_HYPHENATION:
- case LFUN_LIGATURE_BREAK:
- case LFUN_HFILL:
- case LFUN_MENU_SEPARATOR:
- case LFUN_LDOTS:
- case LFUN_END_OF_SENTENCE:
- case LFUN_SPACE_INSERT:
- case LFUN_INSET_DIALOG_SHOW:
- break;
-
case LFUN_INSET_MODIFY:
// We need to disable this, because we may get called for a
// tabular cell via
case LFUN_PASTESELECTION:
case LFUN_DATE_INSERT:
case LFUN_SELFINSERT:
- case LFUN_INSERT_LABEL:
- case LFUN_INSERT_NOTE:
- case LFUN_INSERT_CHARSTYLE:
- case LFUN_INSET_FLOAT:
- case LFUN_INSET_FOOTNOTE:
- case LFUN_INSET_MARGINAL:
- case LFUN_INSET_WIDE_FLOAT:
- case LFUN_INSET_WRAP:
- case LFUN_TABULAR_INSERT:
case LFUN_INSERT_LINE:
case LFUN_INSERT_PAGEBREAK:
case LFUN_MATH_DISPLAY:
case LFUN_HUNG_UMLAUT:
case LFUN_CIRCLE:
case LFUN_OGONEK:
- case LFUN_FLOAT_LIST:
case LFUN_ACCEPT_CHANGE:
case LFUN_REJECT_CHANGE:
case LFUN_THESAURUS_ENTRY:
case LFUN_PARAGRAPH_APPLY:
case LFUN_ESCAPE:
- case LFUN_KEYMAP_TOGGLE:
case LFUN_ENDBUF:
case LFUN_BEGINNINGBUF:
case LFUN_BEGINNINGBUFSEL:
default:
return false;
}
+
+ if (code != InsetBase::NO_CODE
+ && (cur.empty() || !cur.inset().insetAllowed(code)))
+ enable = false;
+
flag.enabled(enable);
return true;
}