Reset InsetArgument language after passthru status change

Fixes: #10664
(cherry picked from commit d8c018b8c6)
This commit is contained in:
Juergen Spitzmueller 2017-09-15 16:21:05 +02:00
parent 9302b1ae63
commit a7b017fd2f
2 changed files with 29 additions and 1 deletions

View File

@ -68,6 +68,8 @@ void InsetArgument::updateBuffer(ParIterator const & it, UpdateType utype)
it.inset().getLayout().args() : it.paragraph().layout().args();
pass_thru_context_ = insetlayout ?
it.inset().getLayout().isPassThru() : it.paragraph().layout().pass_thru;
// Record PassThru status in order to act on changes.
bool const former_pass_thru = pass_thru_;
// Handle pre 2.1 ArgInsets (lyx2lyx cannot classify them)
if (name_ == "999") {
@ -139,6 +141,16 @@ void InsetArgument::updateBuffer(ParIterator const & it, UpdateType utype)
labelstring_ = _("Unknown Argument");
tooltip_ = _("Argument not known in this Layout. Will be supressed in the output.");
}
if (former_pass_thru != pass_thru_) {
// PassThru status changed. We might need to update
// the language of the contents
Language const * l = insetlayout
? it.inset().buffer().language()
: it.buffer()->language();
fixParagraphLanguage(l);
}
setButtonLabel();
InsetCollapsable::updateBuffer(it, utype);
}
@ -187,8 +199,13 @@ void InsetArgument::doDispatch(Cursor & cur, FuncRequest & cmd)
// forcing to latex_language in InsetText::dispatch(),
// since this does not play nicely with inherited pass_thru
// (see #8471).
if (pass_thru_ && !pass_thru_local_)
if (pass_thru_ && !pass_thru_local_) {
text().dispatch(cur, cmd);
// For the paste operations, check if we have
// non-latex_language, and if so, fix.
if (cmd.action() != LFUN_SELF_INSERT)
fixParagraphLanguage(buffer().params().language);
}
else
InsetCollapsable::doDispatch(cur, cmd);
break;
@ -322,4 +339,13 @@ void InsetArgument::addToToc(DocIterator const & dit, bool output_active,
}
void InsetArgument::fixParagraphLanguage(Language const * l)
{
Font font(inherit_font, l);
if (pass_thru_)
font.setLanguage(latex_language);
paragraphs().front().resetFonts(font);
}
} // namespace lyx

View File

@ -92,6 +92,8 @@ private:
///
docstring toolTip(BufferView const & bv, int, int) const;
///
void fixParagraphLanguage(Language const *);
///
std::string name_;
///
docstring labelstring_;