]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetArgument.cpp
Output a parbreak after a command.
[lyx.git] / src / insets / InsetArgument.cpp
index 9081a96ae69d8cbcf34fe02eb7f0613847804793..2e4285e7fef5ca48f341717e3080ed0f3420fdf1 100644 (file)
@@ -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;