The branch, 2.0.x, has been updated.

- Log -----------------------------------------------------------------

commit ecb65e703896671db62358baa4e5ebe35145bc53
Author: Richard Heck <[email protected]>
Date:   Sat Jul 21 14:14:12 2012 -0400

    Fix a long-standing FIXME by resetting only the counter for top-level
    sectioning when we see an appendix. This fixes bug #8271, whose root
    cause was the fact that we were resetting all the counters inside ERT.
    
    Conflicts:
        src/TextClass.h

diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index c246190..061f00b 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -4145,9 +4145,11 @@ void Buffer::Impl::setLabel(ParIterator & it, UpdateType 
utype) const
        Counters & counters = textclass.counters();
 
        if (par.params().startOfAppendix()) {
-               // FIXME: only the counter corresponding to toplevel
-               // sectioning should be reset
-               counters.reset();
+               // We want to reset the counter corresponding to toplevel 
sectioning
+               Layout const & lay = textclass.getTOCLayout();
+               docstring const cnt = lay.counter;
+               if (!cnt.empty())
+                       counters.reset(cnt);
                counters.appendix(true);
        }
        par.params().appendix(counters.appendix());
diff --git a/src/TextClass.cpp b/src/TextClass.cpp
index 7e431b6..a15f8bf 100644
--- a/src/TextClass.cpp
+++ b/src/TextClass.cpp
@@ -1387,27 +1387,32 @@ bool DocumentClass::hasTocLevels() const
 }
 
 
+Layout const & DocumentClass::getTOCLayout() const
+{
+       // we're going to look for the layout with the minimum toclevel
+       TextClass::LayoutList::const_iterator lit = begin();
+       TextClass::LayoutList::const_iterator const len = end();
+       int minlevel = 1000;
+       Layout const * lay = NULL;
+       for (; lit != len; ++lit) {
+               int const level = lit->toclevel;
+               // we don't want Part
+               if (level == Layout::NOT_IN_TOC || level < 0 || level >= 
minlevel)
+                       continue;
+               lay = &*lit;
+               minlevel = level;
+       }
+       if (lay)
+               return *lay;
+       // hmm. that is very odd, so we'll do our best.
+       return operator[](defaultLayoutName());
+}
+
+
 Layout const & DocumentClass::htmlTOCLayout() const
 {
        if (html_toc_section_.empty()) {
-               // we're going to look for the layout with the minimum toclevel
-               TextClass::LayoutList::const_iterator lit = begin();
-               TextClass::LayoutList::const_iterator const len = end();
-               int minlevel = 1000;
-               Layout const * lay = NULL;
-               for (; lit != len; ++lit) {
-                       int const level = lit->toclevel;
-                       // we don't want Part
-                       if (level == Layout::NOT_IN_TOC || level < 0 || level 
>= minlevel)
-                               continue;
-                       lay = &*lit;
-                       minlevel = level;
-               }
-               if (lay)
-                       html_toc_section_ = lay->name();
-               else
-                       // hmm. that is very odd, so we'll do our best
-                       html_toc_section_ = defaultLayoutName();
+               html_toc_section_ = getTOCLayout().name();
        }
        return operator[](html_toc_section_);
 }
diff --git a/src/TextClass.h b/src/TextClass.h
index 6e20650..dc47192 100644
--- a/src/TextClass.h
+++ b/src/TextClass.h
@@ -397,6 +397,8 @@ public:
        docstring const & preamble() const { return preamble_; }
        ///
        docstring const & htmlpreamble() const { return htmlpreamble_; }
+       ///
+       Layout const & getTOCLayout() const;
        /// the paragraph style to use for TOCs, Bibliography, etc
        /// we will attempt to calculate this if it was not given
        Layout const & htmlTOCLayout() const;
diff --git a/src/output_xhtml.cpp b/src/output_xhtml.cpp
index b882c35..1d60418 100644
--- a/src/output_xhtml.cpp
+++ b/src/output_xhtml.cpp
@@ -947,11 +947,15 @@ void xhtmlParagraphs(Text const & text,
        while (bpit < epit) {
                ParagraphList::const_iterator par = 
paragraphs.constIterator(bpit);
                if (par->params().startOfAppendix()) {
-                       // FIXME: only the counter corresponding to toplevel
-                       // sectioning should be reset
-                       Counters & cnts = 
buf.masterBuffer()->params().documentClass().counters();
-                       cnts.reset();
-                       cnts.appendix(true);
+                       // We want to reset the counter corresponding to 
toplevel sectioning
+                       Layout const & lay =
+                               
buf.masterBuffer()->params().documentClass().getTOCLayout();
+                       docstring const cnt = lay.counter;
+                       if (!cnt.empty()) {
+                               Counters & cnts =
+                                       
buf.masterBuffer()->params().documentClass().counters();
+                               cnts.reset(cnt);
+                       }
                }
                Layout const & style = par->layout();
                ParagraphList::const_iterator const lastpar = par;
diff --git a/status.20x b/status.20x
index 158370e..c720566 100644
--- a/status.20x
+++ b/status.20x
@@ -41,6 +41,8 @@ What's new
 
 * USER INTERFACE
 
+- Reset only the top-level counter when starting the appendix.
+
 - Show backends, not formats, in View>Source (bug #7652).
 
 - Allow native LyX format to be shown in View>Source.
@@ -66,6 +68,8 @@ What's new
 
 * DOCUMENT INPUT/OUTPUT
 
+- Fix assertion when start of appendix is in ERT (bug 8271).
+
 - Do not output empty language switch commands (bug 8216).
 
 - When using Turkish language, use the xkeyval package to avoid

-----------------------------------------------------------------------

Summary of changes:
 src/Buffer.cpp       |    8 +++++---
 src/TextClass.cpp    |   41 +++++++++++++++++++++++------------------
 src/TextClass.h      |    2 ++
 src/output_xhtml.cpp |   14 +++++++++-----
 status.20x           |    4 ++++
 5 files changed, 43 insertions(+), 26 deletions(-)


hooks/post-receive
-- 
The LyX Source Repository

Reply via email to