void LyXFunc::moveCursorUpdate(bool flag, bool selecting)
{
if (selecting || TEXT(flag)->selection.mark()) {
- TEXT(flag)->setSelection(view());
- if (TEXT(flag)->isTopLevel())
+ TEXT(flag)->setSelection();
+ if (!TEXT(flag)->isInInset())
view()->toggleToggle();
}
- view()->update(TEXT(flag), BufferView::SELECT|BufferView::FITCUR);
+ view()->update(TEXT(flag), BufferView::SELECT);
view()->showCursor();
view()->switchKeyMap();
// actions
keyseq.clear();
// copied verbatim from do_accent_char
- view()->update(TEXT(false),
- BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
+ view()->update(TEXT(false), BufferView::SELECT);
TEXT(false)->selection.cursor = TEXT(false)->cursor;
}
// the functions which insert insets
Inset::Code code = Inset::NO_CODE;
switch (ev.action) {
+ case LFUN_DIALOG_SHOW_NEW_INSET:
+ if (ev.argument == "bibitem")
+ code = Inset::BIBITEM_CODE;
+ else if (ev.argument == "bibtex")
+ code = Inset::BIBTEX_CODE;
+ else if (ev.argument == "citation")
+ code = Inset::CITE_CODE;
+ else if (ev.argument == "ert")
+ code = Inset::ERT_CODE;
+ else if (ev.argument == "external")
+ code = Inset::EXTERNAL_CODE;
+ else if (ev.argument == "float")
+ code = Inset::FLOAT_CODE;
+ else if (ev.argument == "graphics")
+ code = Inset::GRAPHICS_CODE;
+ else if (ev.argument == "include")
+ code = Inset::INCLUDE_CODE;
+ else if (ev.argument == "index")
+ code = Inset::INDEX_CODE;
+ else if (ev.argument == "label")
+ code = Inset::LABEL_CODE;
+ else if (ev.argument == "minipage")
+ code = Inset::MINIPAGE_CODE;
+ else if (ev.argument == "ref")
+ code = Inset::REF_CODE;
+ else if (ev.argument == "toc")
+ code = Inset::TOC_CODE;
+ else if (ev.argument == "url")
+ code = Inset::URL_CODE;
+ else if (ev.argument == "wrap")
+ code = Inset::WRAP_CODE;
+ break;
+
case LFUN_INSET_ERT:
code = Inset::ERT_CODE;
break;
- case LFUN_INSET_GRAPHICS:
- code = Inset::GRAPHICS_CODE;
- break;
case LFUN_INSET_FOOTNOTE:
code = Inset::FOOT_CODE;
break;
case LFUN_TABULAR_INSERT:
code = Inset::TABULAR_CODE;
break;
- case LFUN_INSET_EXTERNAL:
- code = Inset::EXTERNAL_CODE;
- break;
case LFUN_INSET_MARGINAL:
code = Inset::MARGIN_CODE;
break;
case LFUN_INSET_OPTARG:
code = Inset::OPTARG_CODE;
break;
- case LFUN_REF_INSERT:
- code = Inset::REF_CODE;
+ case LFUN_ENVIRONMENT_INSERT:
+ code = Inset::MINIPAGE_CODE;
break;
case LFUN_INDEX_INSERT:
code = Inset::INDEX_CODE;
case LFUN_INDEX_PRINT:
code = Inset::INDEX_PRINT_CODE;
break;
- case LFUN_CHILD_INSERT:
- code = Inset::INCLUDE_CODE;
- break;
case LFUN_TOC_INSERT:
code = Inset::TOC_CODE;
break;
break;
case LFUN_HTMLURL:
case LFUN_URL:
- case LFUN_INSERT_URL:
code = Inset::URL_CODE;
break;
case LFUN_QUOTE:
if (TEXT()->cursor.irow()->previous()) {
#if 1
TEXT()->setCursorFromCoordinates(
- view(), TEXT()->cursor.ix() + inset_x,
+ TEXT()->cursor.ix() + inset_x,
TEXT()->cursor.iy() -
TEXT()->cursor.irow()->baseline() - 1);
TEXT()->cursor.x_fix(TEXT()->cursor.x());
moveCursorUpdate(true, false);
owner->view_state_changed();
} else {
- view()->update(TEXT(), BufferView::SELECT|BufferView::FITCUR);
+ view()->update(TEXT(), BufferView::SELECT);
}
goto exit_with_message;
} else if (result == FINISHED_DOWN) {
if (TEXT()->cursor.irow()->next()) {
#if 1
TEXT()->setCursorFromCoordinates(
- view(), TEXT()->cursor.ix() + inset_x,
+ TEXT()->cursor.ix() + inset_x,
TEXT()->cursor.iy() -
TEXT()->cursor.irow()->baseline() +
TEXT()->cursor.irow()->height() + 1);
}
finishUndo();
// Tell the paragraph dialog that we changed paragraph
- owner->getDialogs().updateParagraph();
+ dispatch(FuncRequest(LFUN_PARAGRAPH_UPDATE));
}
}
break;
case LFUN_PREFIX:
{
if (view()->available() && !view()->theLockingInset()) {
- view()->update(TEXT(),
- BufferView::SELECT|BufferView::FITCUR);
+ view()->update(TEXT(), BufferView::SELECT);
}
owner->message(keyseq.printOptions());
}
break;
case LFUN_MENURELOAD:
- reloadBuffer();
+ view()->reload();
break;
case LFUN_UPDATE:
changeDepth(view(), TEXT(false), 1);
break;
- case LFUN_FREE:
- owner->getDialogs().setUserFreeFont();
+ case LFUN_FREEFONT_APPLY:
+ apply_freefont(view());
+ break;
+
+ case LFUN_FREEFONT_UPDATE:
+ update_and_apply_freefont(view(), argument);
break;
case LFUN_RECONFIGURE:
#endif
#endif
case LFUN_HELP_ABOUTLYX:
- owner->getDialogs().showAboutlyx();
+ owner->getDialogs().show("about");
break;
case LFUN_HELP_TEXINFO:
case LFUN_VC_HISTORY:
{
- owner->getDialogs().showVCLogFile();
+ owner->getDialogs().show("vclog");
break;
}
break;
case LFUN_LATEX_LOG:
- owner->getDialogs().showLogFile();
+ owner->getDialogs().show("log");
break;
case LFUN_LAYOUT_DOCUMENT:
owner->getDialogs().showDocument();
break;
- case LFUN_LAYOUT_PARAGRAPH:
- owner->getDialogs().showParagraph();
- break;
-
- case LFUN_LAYOUT_CHARACTER:
- owner->getDialogs().showCharacter();
+ case LFUN_LAYOUT_CHARACTER: {
+ string data = freefont2string();
+ if (!data.empty())
+ owner->getDialogs().show("character", data);
break;
+ }
case LFUN_LAYOUT_TABULAR:
if (view()->theLockingInset()) {
par->inInset()->edit(view());
}
// Set the cursor
- view()->getLyXText()->setCursor(view(), par, 0);
+ view()->getLyXText()->setCursor(par, 0);
view()->switchKeyMap();
owner->view_state_changed();
string data;
if (name == "bibitem" ||
name == "bibtex" ||
+ name == "include" ||
name == "index" ||
name == "ref" ||
name == "toc" ||
} else if (name == "citation") {
InsetCommandParams p("cite");
data = InsetCommandMailer::params2string(name, p);
- } else if (name == "ert") {
- data = InsetERTMailer::params2string(name,
- InsetERT::Open);
}
owner->getDialogs().show(name, data, 0);
}
case LFUN_DIALOG_UPDATE: {
string const & name = argument;
// Can only update a dialog connected to an existing inset
- InsetBase * i = owner->getDialogs().getOpenInset(name);
- if (!i)
- break;
-
- if (name == "bibitem" ||
- name == "bibtex" ||
- name == "citation" ||
- name == "index" ||
- name == "ref" ||
- name == "toc" ||
- name == "url") {
- InsetCommand * inset = dynamic_cast<InsetCommand *>(i);
- if (!inset)
- break;
-
- InsetCommandMailer mailer(name, *inset);
- mailer.updateDialog();
-
- } else if (name == "error") {
- InsetError * inset = dynamic_cast<InsetError *>(i);
- if (!inset)
- break;
-
- owner->getDialogs().update("error",
- inset->getContents());
-
- } else if (name == "ert") {
- InsetERT * inset = dynamic_cast<InsetERT *>(i);
- if (!inset)
- break;
-
- InsetERTMailer mailer(*inset);
- mailer.updateDialog();
+ InsetBase * inset = owner->getDialogs().getOpenInset(name);
+ if (inset) {
+ FuncRequest fr(view(), LFUN_INSET_DIALOG_UPDATE,
+ ev.argument);
+ inset->localDispatch(fr);
+ } else if (name == "paragraph") {
+ dispatch(FuncRequest(LFUN_PARAGRAPH_UPDATE));
}
}
break;
case LFUN_DIALOG_HIDE:
- owner ->getDialogs().hide(argument);
+ Dialogs::hide(argument, 0);
break;
case LFUN_DIALOG_DISCONNECT_INSET:
} // end of switch
exit_with_message:
+
+ view()->owner()->updateLayoutChoice();
+
+ if (view()->available()) {
+ view()->fitCursor();
+
+ // If we executed a mutating lfun, mark the buffer as dirty
+ if (!lyxaction.funcHasFlag(ev.action, LyXAction::NoBuffer)
+ && !lyxaction.funcHasFlag(ev.action, LyXAction::ReadOnly))
+ view()->buffer()->markDirty();
+ }
+
sendDispatchMessage(getMessage(), ev, verbose);
}
}
-void LyXFunc::reloadBuffer()
-{
- string const fn = owner->buffer()->fileName();
- if (bufferlist.close(owner->buffer()))
- view()->buffer(bufferlist.loadLyXFile(fn));
-}
-
-
void LyXFunc::closeBuffer()
{
if (bufferlist.close(owner->buffer()) && !quitting) {