From 39ea8828061f39010204a31714735e8fbca7e36d Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Tue, 28 May 2013 09:41:44 -0400 Subject: [PATCH] Fix logic of new InsetFlex::updateBuffer() routine from a9614f1. --- src/insets/InsetFlex.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) 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(); } -- 2.39.5