Fix previews in yellow notes and disabled branches

While it is not necessary to run validate() on insets that do not
produce output (yellow notes and disabled branches), it has to be done
for previewing, since a construct inside the inset may require some
support.

This is done in two steps:

1. in PreviewLoader::dumpPreamble, indicate that a preview is being
   prepared. It is not clear why the `for_preview' boolean was not set
   before.

2. in Inset(Branch|Note)::validate, always call the parent's validate
   method when previewing.

It should have been possible to move the code from 2. to
InsetText::validate, but the weird code in handling
InsetNoteParams::Comment in html makes it difficult.
This commit is contained in:
Jean-Marc Lasgouttes 2023-12-19 17:45:00 +01:00
parent 3695b631c6
commit 2d5fa181a1
3 changed files with 7 additions and 1 deletions

View File

@ -809,6 +809,7 @@ void PreviewLoader::Impl::dumpPreamble(otexstream & os, Flavor flavor) const
runparams.moving_arg = true;
runparams.free_spacing = true;
runparams.is_child = buffer_.parent();
runparams.for_preview = true;
buffer_.writeLaTeXSource(os, buffer_.filePath(), runparams, Buffer::OnlyPreamble);
// FIXME! This is a HACK! The proper fix is to control the 'true'

View File

@ -22,6 +22,7 @@
#include "FuncRequest.h"
#include "FuncStatus.h"
#include "Inset.h"
#include "LaTeXFeatures.h"
#include "Lexer.h"
#include "LyX.h"
#include "output_docbook.h"
@ -340,7 +341,8 @@ void InsetBranch::forOutliner(docstring & os, size_t const maxlen,
void InsetBranch::validate(LaTeXFeatures & features) const
{
if (producesOutput())
// Showing previews in a disabled branch may require stuff
if (producesOutput() || features.runparams().for_preview)
InsetCollapsible::validate(features);
}

View File

@ -334,6 +334,9 @@ void InsetNote::validate(LaTeXFeatures & features) const
InsetCollapsible::validate(features);
break;
case InsetNoteParams::Note:
// Showing previews in this inset may require stuff
if (features.runparams().for_preview)
InsetCollapsible::validate(features);
break;
}
}