]> git.lyx.org Git - lyx.git/blobdiff - src/paragraph.C
ws changes only
[lyx.git] / src / paragraph.C
index 6d43fb10367bff19ff98d118d16ea16780d2eeae..b53949fd30a8556f4d3ec3aee142d3bd0dee2f32 100644 (file)
@@ -27,6 +27,7 @@
 #include "gettext.h"
 #include "language.h"
 #include "latexrunparams.h"
+#include "lyxfont.h"
 #include "lyxrc.h"
 #include "lyxrow.h"
 #include "texrow.h"
@@ -45,7 +46,7 @@ using lyx::support::contains;
 using lyx::support::subst;
 
 using std::endl;
-
+using std::string;
 using std::ostream;
 using std::ostringstream;
 
@@ -53,7 +54,6 @@ using std::ostringstream;
 Paragraph::Paragraph()
        : y(0), pimpl_(new Paragraph::Pimpl(this))
 {
-       enumdepth = 0;
        itemdepth = 0;
        params().clear();
 }
@@ -62,7 +62,6 @@ Paragraph::Paragraph()
 Paragraph::Paragraph(Paragraph const & lp)
        : y(0), text_(lp.text_), pimpl_(new Paragraph::Pimpl(*lp.pimpl_, this))
 {
-       enumdepth = 0;
        itemdepth = 0;
        // this is because of the dummy layout of the paragraphs that
        // follow footnotes
@@ -92,7 +91,6 @@ void Paragraph::operator=(Paragraph const & lp)
        delete pimpl_;
        pimpl_ = new Pimpl(*lp.pimpl_, this);
 
-       enumdepth = lp.enumdepth;
        itemdepth = lp.itemdepth;
        // this is because of the dummy layout of the paragraphs that
        // follow footnotes
@@ -284,7 +282,7 @@ void Paragraph::insertInset(pos_type pos, InsetOld * inset,
 }
 
 
-bool Paragraph::insetAllowed(InsetOld::Code code)
+bool Paragraph::insetAllowed(InsetOld_code code)
 {
        //lyxerr << "Paragraph::InsertInsetAllowed" << endl;
        if (pimpl_->inset_owner)
@@ -687,6 +685,47 @@ InsetBibitem * Paragraph::bibitem() const
 }
 
 
+namespace {
+
+/* paragraphs inside floats need different alignment tags to avoid
+unwanted space */
+
+bool noTrivlistCentering(UpdatableInset const * inset)
+{
+       if (inset && inset->owner()) {
+               InsetOld::Code const code = inset->owner()->lyxCode();
+               return code == InsetOld::FLOAT_CODE ||
+                       code == InsetOld::WRAP_CODE;
+       }
+       return false;
+}
+
+
+string correction(string const & orig)
+{
+       if (orig == "flushleft")
+               return "raggedright";
+       if (orig == "flushright")
+               return "raggedleft";
+       if (orig == "center")
+               return "centering";
+       return orig;
+}
+
+
+string const corrected_env(string const & suffix, string const & env,
+                          UpdatableInset const * inset)
+{
+       string output = suffix + "{";
+       if (noTrivlistCentering(inset))
+               output += correction(env);
+       else
+               output += env;
+       return output + "}";
+}
+
+} // namespace anon
+
 
 // This could go to ParagraphParameters if we want to
 int Paragraph::startTeXParParams(BufferParams const & bparams,
@@ -721,29 +760,34 @@ int Paragraph::startTeXParParams(BufferParams const & bparams,
        case LYX_ALIGN_LAYOUT:
        case LYX_ALIGN_SPECIAL:
                break;
-       case LYX_ALIGN_LEFT:
-               if (getParLanguage(bparams)->babel() != "hebrew") {
-                       os << "\\begin{flushleft}";
-                       column += 17;
-               } else {
-                       os << "\\begin{flushright}";
-                       column += 18;
-               }
+       case LYX_ALIGN_LEFT: {
+               string output;
+               UpdatableInset const * const inset = pimpl_->inset_owner;
+               if (getParLanguage(bparams)->babel() != "hebrew")
+                       output = corrected_env("\\begin", "flushleft", inset);
+               else
+                       output = corrected_env("\\begin", "flushright", inset);
+               os << output;
+               column += output.size();
                break;
-       case LYX_ALIGN_RIGHT:
-               if (getParLanguage(bparams)->babel() != "hebrew") {
-                       os << "\\begin{flushright}";
-                       column += 18;
-               } else {
-                       os << "\\begin{flushleft}";
-                       column += 17;
-               }
+       } case LYX_ALIGN_RIGHT: {
+               string output;
+               UpdatableInset const * const inset = pimpl_->inset_owner;
+               if (getParLanguage(bparams)->babel() != "hebrew")
+                       output = corrected_env("\\begin", "flushright", inset);
+               else
+                       output = corrected_env("\\begin", "flushleft", inset);
+               os << output;
+               column += output.size();
                break;
-       case LYX_ALIGN_CENTER:
-               os << "\\begin{center}";
-               column += 14;
+       } case LYX_ALIGN_CENTER: {
+               string output;
+               output = corrected_env("\\begin", "center", pimpl_->inset_owner);
+               os << output;
+               column += output.size();
                break;
        }
+       }
 
        return column;
 }
@@ -777,29 +821,35 @@ int Paragraph::endTeXParParams(BufferParams const & bparams,
        case LYX_ALIGN_LAYOUT:
        case LYX_ALIGN_SPECIAL:
                break;
-       case LYX_ALIGN_LEFT:
-               if (getParLanguage(bparams)->babel() != "hebrew") {
-                       os << "\\end{flushleft}";
-                       column = 15;
-               } else {
-                       os << "\\end{flushright}";
-                       column = 16;
-               }
+       case LYX_ALIGN_LEFT: {
+               string output;
+               UpdatableInset const * const inset = pimpl_->inset_owner;
+               if (getParLanguage(bparams)->babel() != "hebrew")
+                       output = corrected_env("\\par\\end", "flushleft", inset);
+               else
+                       output = corrected_env("\\par\\end", "flushright", inset);
+               os << output;
+               column += output.size();
                break;
-       case LYX_ALIGN_RIGHT:
-               if (getParLanguage(bparams)->babel() != "hebrew") {
-                       os << "\\end{flushright}";
-                       column+= 16;
-               } else {
-                       os << "\\end{flushleft}";
-                       column = 15;
-               }
+       } case LYX_ALIGN_RIGHT: {
+               string output;
+               UpdatableInset const * const inset = pimpl_->inset_owner;
+               if (getParLanguage(bparams)->babel() != "hebrew")
+                       output = corrected_env("\\par\\end", "flushright", inset);
+               else
+                       output = corrected_env("\\par\\end", "flushleft", inset);
+               os << output;
+               column += output.size();
                break;
-       case LYX_ALIGN_CENTER:
-               os << "\\end{center}";
-               column = 12;
+       } case LYX_ALIGN_CENTER: {
+               string output;
+               output = corrected_env("\\par\\end", "center", pimpl_->inset_owner);
+               os << output;
+               column += output.size();
                break;
        }
+       }
+
        return column;
 }
 
@@ -818,7 +868,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf,
        LyXLayout_ptr style;
 
        // well we have to check if we are in an inset with unlimited
-       // lenght (all in one row) if that is true then we don't allow
+       // length (all in one row) if that is true then we don't allow
        // any special options in the paragraph and also we don't allow
        // any environment other then "Standard" to be valid!
        bool asdefault =