From: Richard Heck Date: Tue, 28 May 2013 13:41:44 +0000 (-0400) Subject: Fix logic of new InsetFlex::updateBuffer() routine from a9614f1. X-Git-Tag: 2.1.0beta1~138 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=39ea8828061f39010204a31714735e8fbca7e36d;p=features.git Fix logic of new InsetFlex::updateBuffer() routine from a9614f1. --- diff --git a/src/insets/InsetFlex.cpp b/src/insets/InsetFlex.cpp index 9679b06240..9a0db9a097 100644 --- a/src/insets/InsetFlex.cpp +++ b/src/insets/InsetFlex.cpp @@ -129,21 +129,28 @@ void InsetFlex::doDispatch(Cursor & cur, FuncRequest & cmd) void InsetFlex::updateBuffer(ParIterator const & it, UpdateType utype) { BufferParams const & bp = buffer().masterBuffer()->params(); - Counters & cnts = bp.documentClass().counters(); - if (utype == OutputUpdate) { - // the counter is local to this inset - cnts.saveLastCounter(); - } InsetLayout const & il = getLayout(); - docstring const & count = il.counter(); docstring custom_label = translateIfPossible(il.labelstring()); - if (cnts.hasCounter(count)) + + Counters & cnts = bp.documentClass().counters(); + docstring const & count = il.counter(); + bool const have_counter = cnts.hasCounter(count); + if (have_counter) { cnts.step(count, utype); - custom_label += ' ' + - cnts.theCounter(count, it.paragraph().getParLanguage(bp)->code()); + custom_label += ' ' + + cnts.theCounter(count, it.paragraph().getParLanguage(bp)->code()); + } setLabel(custom_label); + + bool const save_counter = have_counter && utype == OutputUpdate; + if (save_counter) { + // we assume the counter is local to this inset + // if this turns out to be wrong in some case, we will + // need a layout flag + cnts.saveLastCounter(); + } InsetCollapsable::updateBuffer(it, utype); - if (utype == OutputUpdate) + if (save_counter) cnts.restoreLastCounter(); }