#include "insets/InsetBibtex.h"
#include "insets/InsetCommand.h" // ChangeRefs
+#include "insets/InsetExternal.h"
+#include "insets/InsetGraphics.h"
#include "insets/InsetRef.h"
#include "insets/InsetText.h"
case LFUN_FONT_STATE:
case LFUN_LABEL_INSERT:
case LFUN_INFO_INSERT:
+ case LFUN_EXTERNAL_EDIT:
+ case LFUN_GRAPHICS_EDIT:
case LFUN_PARAGRAPH_GOTO:
case LFUN_NOTE_NEXT:
case LFUN_REFERENCE_NEXT:
case LFUN_BIBTEX_DATABASE_ADD:
case LFUN_BIBTEX_DATABASE_DEL:
case LFUN_STATISTICS:
- case LFUN_NEXT_INSET_TOGGLE:
flag.enabled(true);
break;
+ case LFUN_NEXT_INSET_TOGGLE: {
+ // this is the real function we want to invoke
+ FuncRequest tmpcmd = FuncRequest(LFUN_INSET_TOGGLE, cmd.argument());
+ // if there is an inset at cursor, see whether it
+ // can be modified.
+ Inset * inset = cur.nextInset();
+ if (inset) {
+ inset->getStatus(cur, tmpcmd, flag);
+ return flag;
+ break;
+ }
+ // if it did not work, try the underlying inset.
+ if (!inset || !cur.result().dispatched())
+ getStatus(tmpcmd);
+
+ if (!cur.result().dispatched())
+ // else disable
+ flag.enabled(false);
+ break;
+ }
+
+ case LFUN_NEXT_INSET_MODIFY: {
+ // this is the real function we want to invoke
+ FuncRequest tmpcmd = FuncRequest(LFUN_INSET_MODIFY, cmd.argument());
+ // if there is an inset at cursor, see whether it
+ // can be modified.
+ Inset * inset = cur.nextInset();
+ if (inset) {
+ inset->getStatus(cur, tmpcmd, flag);
+ return flag;
+ break;
+ }
+ // if it did not work, try the underlying inset.
+ if (!inset || !cur.result().dispatched())
+ getStatus(tmpcmd);
+
+ if (!cur.result().dispatched())
+ // else disable
+ flag.enabled(false);
+ break;
+ }
+
case LFUN_LABEL_GOTO: {
flag.enabled(!cmd.argument().empty()
|| getInsetByCode<InsetRef>(cur, REF_CODE));
case LFUN_INSET_SETTINGS: {
InsetCode code = cur.inset().lyxCode();
+ if (cur.nextInset())
+ code = cur.nextInset()->lyxCode();
bool enable = false;
switch (code) {
case TABULAR_CODE:
- enable = cmd.argument() == "tabular";
- break;
case ERT_CODE:
- enable = cmd.argument() == "ert";
- break;
case FLOAT_CODE:
- enable = cmd.argument() == "float";
- break;
case WRAP_CODE:
- enable = cmd.argument() == "wrap";
- break;
case NOTE_CODE:
- enable = cmd.argument() == "note";
- break;
case BRANCH_CODE:
- enable = cmd.argument() == "branch";
- break;
case BOX_CODE:
- enable = cmd.argument() == "box";
- break;
case LISTINGS_CODE:
- enable = cmd.argument() == "listings";
+ enable = (cmd.argument().empty() ||
+ cmd.getArg(0) == insetName(code));
break;
default:
break;
gotoLabel(label);
break;
}
+
+ case LFUN_EXTERNAL_EDIT: {
+ FuncRequest fr(cmd);
+ InsetExternal * inset = getInsetByCode<InsetExternal>(d->cursor_,
+ EXTERNAL_CODE);
+ if (inset)
+ inset->dispatch(d->cursor_, fr);
+ break;
+ }
+
+
+ case LFUN_GRAPHICS_EDIT: {
+ FuncRequest fr(cmd);
+ InsetGraphics * inset = getInsetByCode<InsetGraphics>(d->cursor_,
+ GRAPHICS_CODE);
+ if (inset)
+ inset->dispatch(d->cursor_, fr);
+ break;
+ }
case LFUN_PARAGRAPH_GOTO: {
int const id = convert<int>(to_utf8(cmd.argument()));
}
}
// if it did not work, try the underlying inset.
- if (!cur.result().dispatched())
+ if (!inset || !cur.result().dispatched())
cur.dispatch(tmpcmd);
if (!cur.result().dispatched())
break;
}
+ case LFUN_NEXT_INSET_MODIFY: {
+ // this is the real function we want to invoke
+ FuncRequest tmpcmd = FuncRequest(LFUN_INSET_MODIFY, cmd.argument());
+ // if there is an inset at cursor, see whether it
+ // can be modified.
+ Inset * inset = cur.nextInset();
+ if (inset)
+ inset->dispatch(cur, tmpcmd);
+ // if it did not work, try the underlying inset.
+ if (!inset || !cur.result().dispatched())
+ cur.dispatch(tmpcmd);
+
+ if (!cur.result().dispatched())
+ // It did not work too; no action needed.
+ break;
+ cur.clearSelection();
+ processUpdateFlags(Update::Force | Update::FitCursor);
+ break;
+ }
+
case LFUN_SCREEN_UP:
case LFUN_SCREEN_DOWN: {
Point p = getPos(cur, cur.boundary());
// Now dispatch to the temporary cursor. If the real cursor should
// be modified, the inset's dispatch has to do so explicitly.
- if (!cur.result().dispatched())
+ if (!inset || !cur.result().dispatched())
cur.dispatch(cmd);
// Notify left insets