From 1db5abbfbd38c8a709eefe63aea65e1297b7725e Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Mon, 31 Dec 2018 18:32:38 +0100 Subject: [PATCH] Mark labels in non-outputting insets as inactive. Fixes: #11437 --- src/insets/InsetLabel.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/insets/InsetLabel.cpp b/src/insets/InsetLabel.cpp index cb419f397d..768d8293dc 100644 --- a/src/insets/InsetLabel.cpp +++ b/src/insets/InsetLabel.cpp @@ -146,14 +146,16 @@ void InsetLabel::updateBuffer(ParIterator const & par, UpdateType utype) { docstring const & label = getParam("name"); - // Check if this one is deleted (ct) + // Check if this one is active (i.e., neither deleted with change-tracking + // nor in an inset that does not produce output, such as notes or inactive branches) Paragraph const & para = par.paragraph(); - bool active = !para.isDeleted(par.pos()); - // If not, check whether we are in a deleted inset + bool active = !para.isDeleted(par.pos()) && para.inInset().producesOutput(); + // If not, check whether we are in a deleted/non-outputting inset if (active) { for (size_type sl = 0 ; sl < par.depth() ; ++sl) { Paragraph const & outer_par = par[sl].paragraph(); - if (outer_par.isDeleted(par[sl].pos())) { + if (outer_par.isDeleted(par[sl].pos()) + || !outer_par.inInset().producesOutput()) { active = false; break; }