The branch, feature/docbook, has been updated.
  discards  4ac929f3df456a0617aae41f3aaed803dd97cf32 (commit)
  discards  bcbb4f0957bb39d274af0a30158ba9750b127121 (commit)
  discards  d97b9ebd03d75f0bb8c6a207f1078b32cfd39a2b (commit)

This update added new revisions after undoing existing revisions.  That is
to say, the old revision is not a strict subset of the new revision.  This
situation occurs when you --force push a change and generate a repository
containing something like this:

 * -- * -- B -- O -- O -- O (4ac929f3df456a0617aae41f3aaed803dd97cf32)
            \
             N -- N -- N (1fccfc24da4ad2f491b659ad7dcd8fbce29eef3d)

When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.

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

commit 1fccfc24da4ad2f491b659ad7dcd8fbce29eef3d
Author: Thibaut Cuvelier <[email protected]>
Date:   Fri Sep 11 03:14:41 2020 +0200

    DocBook: handle other cases of subfigures.

diff --git a/src/insets/InsetFloat.cpp b/src/insets/InsetFloat.cpp
index 981ba40..d680013 100644
--- a/src/insets/InsetFloat.cpp
+++ b/src/insets/InsetFloat.cpp
@@ -492,19 +492,22 @@ int InsetFloat::plaintext(odocstringstream & os, 
OutputParams const & runparams,
 }
 
 
-std::vector<const InsetBox *> findSubfiguresInParagraph(const Paragraph &par)
+std::vector<const InsetCollapsible *> findSubfiguresInParagraph(const 
Paragraph &par)
 {
 
        // Don't make the hypothesis that all subfigures are in the same 
paragraph.
        // Similarly, there may be several subfigures in the same paragraph 
(most likely case, based on the documentation).
        // Any box is considered as a subfigure, even though the most likely 
case is \minipage.
-       std::vector<const InsetBox *> subfigures;
+       // Boxes are not required to make subfigures. The common root between 
InsetBox and InsetFLoat is InsetCollapsible.
+       std::vector<const InsetCollapsible *> subfigures;
        for (pos_type pos = 0; pos < par.size(); ++pos) {
                const Inset *inset = par.getInset(pos);
                if (!inset)
                        continue;
                if (const auto box = dynamic_cast<const InsetBox *>(inset))
                        subfigures.push_back(box);
+               else if (const auto fl = dynamic_cast<const InsetFloat 
*>(inset))
+                       subfigures.push_back(fl);
        }
        return subfigures;
 }
@@ -564,7 +567,7 @@ const InsetCaption* findCaptionInParagraph(const Paragraph 
&par)
 
 
 void docbookSubfigures(XMLStream & xs, OutputParams const & runparams, const 
InsetCaption * caption,
-                                          const InsetLabel * label, 
std::vector<const InsetBox *> & subfigures)
+                                          const InsetLabel * label, 
std::vector<const InsetCollapsible *> & subfigures)
 {
        // Ensure there is no label output, it is supposed to be handled as 
xml:id.
        OutputParams rpNoLabel = runparams;
@@ -592,20 +595,29 @@ void docbookSubfigures(XMLStream & xs, OutputParams const 
& runparams, const Ins
 
        // Deal with each subfigure individually. This should also deal with 
their caption and their label.
        // This should be a recursive call to InsetFloat.
-       for (const InsetBox *subfigure: subfigures) {
+       // An item in subfigure should either be an InsetBox containing an 
InsetFloat or directly an InsetFloat.
+       for (const InsetCollapsible *subfigure: subfigures) {
                // If there is no InsetFloat in the paragraphs, output a 
warning.
                bool foundInsetFloat = false;
-               for (const auto & it : subfigure->paragraphs()) {
-                       for (pos_type posIn = 0; posIn < it.size(); ++posIn) {
-                               const Inset *inset = it.getInset(posIn);
-                               if (inset && dynamic_cast<const 
InsetFloat*>(inset)) {
-                                       foundInsetFloat = true;
-                                       break;
+
+               // The collapsible may already be a float (InsetFloat).
+               if (subfigure && dynamic_cast<const InsetFloat *>(subfigure))
+                       foundInsetFloat = true;
+
+               // Subfigures are in boxes.
+               if (!foundInsetFloat) {
+                       for (const auto &it : subfigure->paragraphs()) {
+                               for (pos_type posIn = 0; posIn < it.size(); 
++posIn) {
+                                       const Inset *inset = it.getInset(posIn);
+                                       if (inset && dynamic_cast<const 
InsetFloat *>(inset)) {
+                                               foundInsetFloat = true;
+                                               break;
+                                       }
                                }
-                       }
 
-                       if (foundInsetFloat)
-                               break;
+                               if (foundInsetFloat)
+                                       break;
+                       }
                }
 
                if (!foundInsetFloat)
@@ -673,11 +685,11 @@ void InsetFloat::docbook(XMLStream & xs, OutputParams 
const & runparams) const
        // The caption and the label for each subfigure is handled by recursive 
calls.
        const InsetCaption* caption = nullptr;
        const InsetLabel* label = nullptr;
-       std::vector<const InsetBox *> subfigures;
+       std::vector<const InsetCollapsible *> subfigures;
 
        auto end = paragraphs().end();
        for (auto it = paragraphs().begin(); it != end; ++it) {
-               std::vector<const InsetBox *> foundSubfigures = 
findSubfiguresInParagraph(*it);
+               std::vector<const InsetCollapsible *> foundSubfigures = 
findSubfiguresInParagraph(*it);
                if (!foundSubfigures.empty()) {
                        subfigures.reserve(subfigures.size() + 
foundSubfigures.size());
                        subfigures.insert(subfigures.end(), 
foundSubfigures.begin(), foundSubfigures.end());

commit 0a7c29c9b567518d26a378759846e892b33d2925
Author: Thibaut Cuvelier <[email protected]>
Date:   Fri Sep 11 03:05:04 2020 +0200

    DocBook: in configure.py, DeclareDocBookClass doesn't need to be checked 
anymore.

diff --git a/lib/configure.py b/lib/configure.py
index 2247c78..b267576 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -1339,7 +1339,7 @@ def processLayoutFile(file):
     '''
     classname = file.split(os.sep)[-1].split('.')[0]
     # return ('LaTeX', '[a,b]', 'a', ',b,c', 'article') for 
\DeclareLaTeXClass[a,b,c]{article}
-    p = 
re.compile('\s*#\s*\\\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
+    p = 
re.compile('\s*#\s*\\\\DeclareLaTeXClass\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
     q = re.compile('\s*#\s*\\\\DeclareCategory{(.*)}\s*$')
     classdeclaration = ""
     categorydeclaration = '""'
@@ -1347,7 +1347,8 @@ def processLayoutFile(file):
         res = p.match(line)
         qres = q.match(line)
         if res != None:
-            (classtype, optAll, opt, opt1, desc) = res.groups()
+            (optAll, opt, opt1, desc) = res.groups()
+            classtype = "LaTeX"
             avai = {'LaTeX': 'false', 'DocBook': 'true'}[classtype]
             if opt == None:
                 opt = classname
@@ -1434,7 +1435,7 @@ def checkLatexConfig(check_config):
     # Construct the list of classes to test for.
     # build the list of available layout files and convert it to commands
     # for chkconfig.ltx
-    declare = 
re.compile('\\s*#\\s*\\\\Declare(LaTeX|DocBook)Class\\s*(\[([^,]*)(,.*)*\])*\\s*{(.*)}\\s*$')
+    declare = 
re.compile('\\s*#\\s*\\\\DeclareLaTeXClass\\s*(\[([^,]*)(,.*)*\])*\\s*{(.*)}\\s*$')
     category = re.compile('\\s*#\\s*\\\\DeclareCategory{(.*)}\\s*$')
     empty = re.compile('\\s*$')
     testclasses = list()
@@ -1455,10 +1456,10 @@ def checkLatexConfig(check_config):
                         nodeclaration = True
                     # A class, but no category declaration. Just break.
                     break
-                if declare.match(line) != None:
+                if declare.match(line) is not None:
                     decline = "\\TestDocClass{%s}{%s}" % (classname, 
line[1:].strip())
                     testclasses.append(decline)
-                elif category.match(line) != None:
+                elif category.match(line) is not None:
                     catline = ("\\DeclareCategory{%s}{%s}"
                                % (classname, category.match(line).groups()[0]))
                     testclasses.append(catline)

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

Summary of changes:
 lib/configure.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)


hooks/post-receive
-- 
Repository for new features
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to