X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetArgument.cpp;h=2e4285e7fef5ca48f341717e3080ed0f3420fdf1;hb=f83ac67e1a98fa3f6b20904e397afba81fe9830f;hp=e4acd6b2367e4c0f0595cf5b31d0ad99cb80f2ff;hpb=1500e44cbad09d0d2aecdd1511f69ea5ae084633;p=lyx.git diff --git a/src/insets/InsetArgument.cpp b/src/insets/InsetArgument.cpp index e4acd6b236..2e4285e7fe 100644 --- a/src/insets/InsetArgument.cpp +++ b/src/insets/InsetArgument.cpp @@ -57,18 +57,12 @@ void InsetArgument::read(Lexer & lex) void InsetArgument::updateBuffer(ParIterator const & it, UpdateType utype) { - Layout::LaTeXArgMap args; - bool const insetlayout = &it.inset() && it.paragraph().layout().latexargs().empty() - && it.paragraph().layout().itemargs().empty(); + Layout::LaTeXArgMap args = it.paragraph().layout().args(); + pass_thru_ = it.paragraph().layout().pass_thru; + bool const insetlayout = &it.inset() && args.empty(); if (insetlayout) { - args = it.inset().getLayout().latexargs(); + args = it.inset().getLayout().args(); pass_thru_ = it.inset().getLayout().isPassThru(); - } else { - args = it.paragraph().layout().latexargs(); - Layout::LaTeXArgMap itemargs = it.paragraph().layout().itemargs(); - if (!itemargs.empty()) - args.insert(itemargs.begin(), itemargs.end()); - pass_thru_ = it.paragraph().layout().pass_thru; } // Handle pre 2.1 ArgInsets (lyx2lyx cannot classify them) @@ -155,6 +149,25 @@ void InsetArgument::doDispatch(Cursor & cur, FuncRequest & cmd) break; } + case LFUN_PASTE: + case LFUN_CLIPBOARD_PASTE: + case LFUN_SELECTION_PASTE: + case LFUN_PRIMARY_SELECTION_PASTE: + // Do not call InsetCollapsable::doDispatch(cur, cmd) + // with (inherited) pass_thru to avoid call for + // fixParagraphsFont(), which does not play nicely with + // inherited pass_thru (see #8471). + // FIXME: Once we have implemented genuine pass_thru + // option for InsetArgument (not inherited pass_thru), + // we should probably directly call + // InsetCollapsable::doDispatch(cur, cmd) for that + // case as well + if (pass_thru_) + text().dispatch(cur, cmd); + else + InsetCollapsable::doDispatch(cur, cmd); + break; + default: InsetCollapsable::doDispatch(cur, cmd); break; @@ -229,21 +242,6 @@ FontInfo InsetArgument::getLabelfont() const return getLayout().labelfont(); } -namespace { - -InsetLayout::InsetDecoration translateDecoration(std::string const & str) -{ - if (support::compare_ascii_no_case(str, "classic") == 0) - return InsetLayout::CLASSIC; - if (support::compare_ascii_no_case(str, "minimalistic") == 0) - return InsetLayout::MINIMALISTIC; - if (support::compare_ascii_no_case(str, "conglomerate") == 0) - return InsetLayout::CONGLOMERATE; - return InsetLayout::DEFAULT; -} - -}// namespace anon - InsetLayout::InsetDecoration InsetArgument::decoration() const { InsetLayout::InsetDecoration dec = getLayout().decoration(); @@ -254,7 +252,7 @@ InsetLayout::InsetDecoration InsetArgument::decoration() const void InsetArgument::latexArgument(otexstream & os, OutputParams const & runparams_in, docstring const & ldelim, - docstring const & rdelim) const + docstring const & rdelim, docstring const & presetarg) const { TexRow texrow; odocstringstream ss; @@ -262,6 +260,9 @@ void InsetArgument::latexArgument(otexstream & os, OutputParams runparams = runparams_in; InsetText::latex(ots, runparams); docstring str = ss.str(); + docstring const sep = str.empty() ? docstring() : from_ascii(", "); + if (!presetarg.empty()) + str = presetarg + sep + str; if (ldelim != "{" && support::contains(str, rdelim)) str = '{' + str + '}'; os << ldelim << str << rdelim;