]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetSpace.cpp
Properly fix handling of title layouts within insets (#11787)
[lyx.git] / src / insets / InsetSpace.cpp
index a5fed47fbfec5f27896ac344a847f298e8b22186..84c6a2599c60ba163927bdc4b5f8e9a860a0788d 100644 (file)
@@ -193,6 +193,41 @@ bool InsetSpace::getStatus(Cursor & cur, FuncRequest const & cmd,
 }
 
 
+Inset::RowFlags InsetSpace::rowFlags() const
+{
+       switch (params_.kind) {
+               case InsetSpaceParams::PROTECTED:
+               case InsetSpaceParams::CUSTOM_PROTECTED:
+               case InsetSpaceParams::HFILL_PROTECTED:
+               case InsetSpaceParams::THIN:
+               case InsetSpaceParams::NEGTHIN:
+               case InsetSpaceParams::MEDIUM:
+               case InsetSpaceParams::NEGMEDIUM:
+               case InsetSpaceParams::THICK:
+               case InsetSpaceParams::NEGTHICK:
+               case InsetSpaceParams::ENSPACE:
+               case InsetSpaceParams::VISIBLE:
+                       // no break after these
+                       return Inline;
+               case InsetSpaceParams::NORMAL:
+               case InsetSpaceParams::QUAD:
+               case InsetSpaceParams::QQUAD:
+               case InsetSpaceParams::ENSKIP:
+               case InsetSpaceParams::CUSTOM:
+               case InsetSpaceParams::HFILL:
+               case InsetSpaceParams::DOTFILL:
+               case InsetSpaceParams::HRULEFILL:
+               case InsetSpaceParams::LEFTARROWFILL:
+               case InsetSpaceParams::RIGHTARROWFILL:
+               case InsetSpaceParams::UPBRACEFILL:
+               case InsetSpaceParams::DOWNBRACEFILL:
+                       // these allow line breaking
+                       break;
+       }
+       return CanBreakAfter;
+}
+
+
 namespace {
 int const arrow_size = 8;
 }
@@ -372,8 +407,11 @@ void InsetSpace::draw(PainterInfo & pi, int x, int y) const
        Color col = Color_special;
        if (params_.kind == InsetSpaceParams::PROTECTED ||
            params_.kind == InsetSpaceParams::ENSPACE ||
+           params_.kind == InsetSpaceParams::THIN ||
            params_.kind == InsetSpaceParams::NEGTHIN ||
+           params_.kind == InsetSpaceParams::MEDIUM ||
            params_.kind == InsetSpaceParams::NEGMEDIUM ||
+           params_.kind == InsetSpaceParams::THICK ||
            params_.kind == InsetSpaceParams::NEGTHICK ||
            params_.kind == InsetSpaceParams::CUSTOM_PROTECTED)
                col = Color_latex;
@@ -478,9 +516,9 @@ void InsetSpaceParams::read(Lexer & lex)
                kind = InsetSpaceParams::VISIBLE;
        else if (command == "\\thinspace{}")
                kind = InsetSpaceParams::THIN;
-       else if (math && command == "\\medspace{}")
+       else if (command == "\\medspace{}")
                kind = InsetSpaceParams::MEDIUM;
-       else if (math && command == "\\thickspace{}")
+       else if (command == "\\thickspace{}")
                kind = InsetSpaceParams::THICK;
        else if (command == "\\quad{}")
                kind = InsetSpaceParams::QUAD;
@@ -559,10 +597,16 @@ void InsetSpace::latex(otexstream & os, OutputParams const & runparams) const
                os << (runparams.free_spacing ? " " : "\\,");
                break;
        case InsetSpaceParams::MEDIUM:
-               os << (runparams.free_spacing ? " " : "\\:");
+               if (params_.math)
+                       os << (runparams.free_spacing ? " " : "\\:");
+               else
+                       os << (runparams.free_spacing ? " " : "\\medspace{}");
                break;
        case InsetSpaceParams::THICK:
-               os << (runparams.free_spacing ? " " : "\\;");
+               if (params_.math)
+                       os << (runparams.free_spacing ? " " : "\\;");
+               else
+                       os << (runparams.free_spacing ? " " : "\\thickspace{}");
                break;
        case InsetSpaceParams::QUAD:
                os << (runparams.free_spacing ? " " : "\\quad{}");
@@ -762,7 +806,7 @@ int InsetSpace::docbook(odocstream & os, OutputParams const &) const
 }
 
 
-docstring InsetSpace::xhtml(XHTMLStream & xs, OutputParams const &) const
+docstring InsetSpace::xhtml(XMLStream & xs, OutputParams const &) const
 {
        string output;
        switch (params_.kind) {
@@ -822,15 +866,18 @@ docstring InsetSpace::xhtml(XHTMLStream & xs, OutputParams const &) const
                break;
        }
        // don't escape the entities!
-       xs << XHTMLStream::ESCAPE_NONE << from_ascii(output);
+       xs << XMLStream::ESCAPE_NONE << from_ascii(output);
        return docstring();
 }
 
 
 void InsetSpace::validate(LaTeXFeatures & features) const
 {
-       if (params_.kind == InsetSpaceParams::NEGMEDIUM ||
-           params_.kind == InsetSpaceParams::NEGTHICK)
+       if ((params_.kind == InsetSpaceParams::NEGMEDIUM
+            || params_.kind == InsetSpaceParams::NEGTHICK)
+           || (!params_.math
+               && (params_.kind == InsetSpaceParams::MEDIUM
+                   || params_.kind == InsetSpaceParams::THICK)))
                features.require("amsmath");
 }