We already allowed a counter declaraton for flex insets. We just

didn't do anything with it. So let's do something with it.

Fixes bug #8470.
This commit is contained in:
Richard Heck 2013-05-23 16:36:59 -04:00
parent ecb3b7b25c
commit a9614f15d2
4 changed files with 44 additions and 13 deletions

View File

@ -6,15 +6,20 @@
Format 45
InsetLayout Flex:Endnote
LyXType custom
LatexName endnote
LatexType command
Decoration classic
Font
Size Small
EndFont
MultiPar true
LabelString endnote
Requires endnotes
Counter endnotes
PrettyFormat "Endnote ##"
End
InsetLayout Flex:Endnote
LyXType custom
LatexName endnote
LatexType command
Counter endnotes
Decoration classic
Font
Size Small
EndFont
MultiPar true
LabelString endnote
Requires endnotes
End

View File

@ -19,7 +19,9 @@
#include "Cursor.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
#include "Language.h"
#include "Lexer.h"
#include "ParIterator.h"
#include "TextClass.h"
#include "support/gettext.h"
@ -124,4 +126,26 @@ 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))
cnts.step(count, utype);
custom_label += ' ' +
cnts.theCounter(count, it.paragraph().getParLanguage(bp)->code());
setLabel(custom_label);
InsetCollapsable::updateBuffer(it, utype);
if (utype == OutputUpdate)
cnts.restoreLastCounter();
}
} // namespace lyx

View File

@ -45,6 +45,8 @@ public:
FuncStatus &) const;
///
void doDispatch(Cursor & cur, FuncRequest & cmd);
///
void updateBuffer(ParIterator const & it, UpdateType utype);
protected:
///

View File

@ -48,10 +48,10 @@ void InsetFoot::updateBuffer(ParIterator const & it, UpdateType utype)
if (!outer.layout().intitle) {
InsetLayout const & il = getLayout();
docstring const & count = il.counter();
custom_label_ = translateIfPossible(il.labelstring()) + ' ';
custom_label_ = translateIfPossible(il.labelstring());
if (cnts.hasCounter(count))
cnts.step(count, utype);
custom_label_ +=
custom_label_ += ' ' +
cnts.theCounter(count, outer.getParLanguage(bp)->code());
setLabel(custom_label_);
}