]> git.lyx.org Git - features.git/blobdiff - src/insets/InsetFloat.cpp
Completion: handle undo in insets' insertCompletion methods
[features.git] / src / insets / InsetFloat.cpp
index 3f4c0dbcdc21668d2301b77f602eef5d946de366..0c9f3d48c57617442af3d266ce841ea147e213f7 100644 (file)
@@ -792,7 +792,8 @@ void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const I
                hasCaption = !osCaptionContent.str().empty();
        }
 
-       // Organisation: <float> <title if any/> <contents without title/> </float>.
+       // Organisation: <float with xml:id if any> <title if any/> <contents without title nor xml:id/> </float>.
+       // Titles and xml:id are generated with specific insets and must be dealt with using OutputParams.
 
        // - Generate the attributes for the float tag.
        docstring attr = docstring();
@@ -818,12 +819,15 @@ void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const I
        }
 
        // - Output the actual content of the float or some dummy content (to ensure that the output
-       // document is valid).
+       // document is valid). Use HTML tables by default, unless an InsetFloat is given.
        if (hasFloat)
                xs << XMLStream::ESCAPE_NONE << osFloatContent.str();
-       else if (ftype.docbookFloatType() == "table")
-               docbookGenerateFillerTable(xs, thisFloat->buffer().params().docbook_table_output);
-       else
+       else if (ftype.docbookFloatType() == "table") {
+               BufferParams::TableOutput tableFormat = BufferParams::HTMLTable;
+               if (thisFloat)
+                       tableFormat = thisFloat->buffer().params().docbook_table_output;
+               docbookGenerateFillerTable(xs, tableFormat);
+       } else
                docbookGenerateFillerMedia(xs);
 
        // - Close the float.
@@ -875,12 +879,21 @@ bool InsetFloat::insetAllowed(InsetCode code) const
 }
 
 
+void InsetFloat::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted)
+{
+       InsetCaptionable::updateBuffer(it, utype, deleted);
+       bool const subflt = (it.innerInsetOfType(FLOAT_CODE)
+                            || it.innerInsetOfType(WRAP_CODE));
+       setSubfloat(subflt);
+}
+
+
 void InsetFloat::setWide(bool w, bool update_label)
 {
        if (!buffer().params().documentClass().floats().allowsWide(params_.type))
                params_.wide = false;
        else
-           params_.wide = w;
+               params_.wide = w;
        if (update_label)
                setNewLabel();
 }