I just had a look at the bug list and don't see anything which should be fixed
for 1.2.0. The only incompatibility with 1.1.6 is still that we forget about the
paragrap-extra "indent" stuff (we loose this information). This is actually an
added "left-indent" for the whole paragraph (not only the first row of the
paragraph).

With the attached patch we read/write/handle this information again. The only
thing missing in the patch is the visual UI to input/change the information
which should be in the Paragrap-Layout, but IMO that can be done also later.

For now we don't loose old information and also handle it quite good.

         Jug

--
-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._
Dr. Jürgen Vigna        E-Mail:  [EMAIL PROTECTED]
Italienallee 13/N       Tel/Fax: +39-0471-450260 / +39-0471-450253
I-39100 Bozen           Web:     http://www.sad.it/~jug
-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._-._

You can't kiss a girl unexpectedly -- only sooner than she thought you would.

Index: src/LaTeXFeatures.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/LaTeXFeatures.C,v
retrieving revision 1.61
diff -u -p -r1.61 LaTeXFeatures.C
--- src/LaTeXFeatures.C 23 Apr 2002 22:34:24 -0000      1.61
+++ src/LaTeXFeatures.C 3 May 2002 13:34:09 -0000
@@ -303,8 +303,8 @@ string const LaTeXFeatures::getMacros() 
        // other
        if (isRequired("NeedLyXMinipageIndent"))
                macros << minipageindent_def;
-       if (isRequired("ParagraphIndent"))
-               macros << paragraphindent_def;
+       if (isRequired("ParagraphLeftIndent"))
+               macros << paragraphleftindent_def;
        if (isRequired("NeedLyXFootnoteCode"))
                macros << floatingfootnote_def;
 
Index: src/ParagraphParameters.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ParagraphParameters.C,v
retrieving revision 1.8
diff -u -p -r1.8 ParagraphParameters.C
--- src/ParagraphParameters.C   21 Mar 2002 17:25:09 -0000      1.8
+++ src/ParagraphParameters.C   3 May 2002 13:34:09 -0000
@@ -268,6 +268,21 @@ void ParagraphParameters::labelWidthStri
        set_from_struct(tmp);
 }
 
+
+
+LyXLength const & ParagraphParameters::leftIndent() const
+{
+       return param->leftindent;
+}
+
+
+void ParagraphParameters::leftIndent(LyXLength const & li)
+{
+       ParameterStruct tmp(*param);
+       tmp.leftindent = li;
+       set_from_struct(tmp);
+}
+
 #ifndef NO_PEXTRA_REALLY
 int ParagraphParameters::pextraType() const
 {
Index: src/ParagraphParameters.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ParagraphParameters.h,v
retrieving revision 1.7
diff -u -p -r1.7 ParagraphParameters.h
--- src/ParagraphParameters.h   3 Aug 2001 18:28:03 -0000       1.7
+++ src/ParagraphParameters.h   3 May 2002 13:34:09 -0000
@@ -87,6 +87,11 @@ public:
        string const & labelWidthString() const;
        ///
        void labelWidthString(string const &);
+       ///
+       LyXLength const & leftIndent() const;
+       ///
+       void leftIndent(LyXLength const &);
+       ///
 #ifndef NO_PEXTRA_REALLY
        ///
        int pextraType() const;
Index: src/ParameterStruct.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ParameterStruct.h,v
retrieving revision 1.5
diff -u -p -r1.5 ParameterStruct.h
--- src/ParameterStruct.h       21 Mar 2002 17:25:09 -0000      1.5
+++ src/ParameterStruct.h       3 May 2002 13:34:09 -0000
@@ -6,6 +6,7 @@
 #include "vspace.h"
 #include "Spacing.h"
 #include "layout.h"
+#include "lyxlength.h"
 
 #ifdef __GNUG__
 #pragma interface
@@ -45,6 +46,9 @@ struct ParameterStruct {
        string labelstring;
        ///
        string labelwidthstring;
+       ///
+       LyXLength leftindent;
+       ///
 #ifndef NO_PEXTRA_REALLY
        ///
        int pextra_type;
@@ -93,6 +97,7 @@ bool operator==(ParameterStruct const & 
                && ps1.appendix == ps2.appendix
                && ps1.labelstring == ps2.labelstring
                && ps1.labelwidthstring == ps2.labelwidthstring
+               && ps1.leftindent == ps2.leftindent
 #ifndef NO_PEXTRA_REALLY
                && ps1.pextra_type == ps2.pextra_type
                && ps1.pextra_width == ps2.pextra_width
Index: src/buffer.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/buffer.C,v
retrieving revision 1.332
diff -u -p -r1.332 buffer.C
--- src/buffer.C        2 May 2002 12:21:41 -0000       1.332
+++ src/buffer.C        3 May 2002 13:34:12 -0000
@@ -718,6 +718,10 @@ Buffer::parseSingleLyXformat2Token(LyXLe
                params.fonts = lex.getString();
        } else if (token == "\\noindent") {
                par->params().noindent(true);
+       } else if (token == "\\leftindent") {
+               lex.nextToken();
+               LyXLength value(lex.getString());
+               par->params().leftIndent(value);
        } else if (token == "\\fill_top") {
                par->params().spaceTop(VSpace(VSpace::VFILL));
        } else if (token == "\\fill_bottom") {
@@ -1385,6 +1389,11 @@ Buffer::parseSingleLyXformat2Token(LyXLe
                        }
                        parBeforeMinipage->insertInset
                                (parBeforeMinipage->size(), mini, font);
+               } else if (par->params().pextraType() == Paragraph::PEXTRA_INDENT) {
+                       
+par->params().leftIndent(LyXLength(par->params().pextraWidth()));
+                       if (!par->params().pextraWidthp().empty()) {
+                               
+par->params().leftIndent(LyXLength((par->params().pextraWidthp())+"col%"));
+                       }
                }
        }
        // End of pextra_minipage compability
@@ -2587,7 +2596,9 @@ void Buffer::latexParagraphs(ostream & o
                                was_title = false;
                        }
 
-                       if (layout.isEnvironment()) {
+                       if (layout.isEnvironment() ||
+                               !par->params().leftIndent().zero())
+                       {
                                par = par->TeXEnvironment(this, params, ofs, texrow);
                        } else {
                                par = par->TeXOnePar(this, params, ofs, texrow, false);
Index: src/lyx_sty.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyx_sty.C,v
retrieving revision 1.8
diff -u -p -r1.8 lyx_sty.C
--- src/lyx_sty.C       21 Mar 2002 17:25:12 -0000      1.8
+++ src/lyx_sty.C       3 May 2002 13:34:12 -0000
@@ -75,8 +75,8 @@ string const guilsinglright_def =
        "  {\\usefont{U}{lasy}{m}{n}\\char'51}%\n"
        "}";
 
-string const paragraphindent_def =
-       "\\newenvironment{LyXParagraphIndent}[1]%\n"
+string const paragraphleftindent_def =
+       "\\newenvironment{LyXParagraphLeftIndent}[1]%\n"
        "{\n"
        "  \\begin{list}{}{%\n"
        "    \\setlength\\topsep{0pt}%\n"
Index: src/lyx_sty.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyx_sty.h,v
retrieving revision 1.9
diff -u -p -r1.9 lyx_sty.h
--- src/lyx_sty.h       21 Mar 2002 17:25:12 -0000      1.9
+++ src/lyx_sty.h       3 May 2002 13:34:12 -0000
@@ -53,7 +53,7 @@ extern string const guilsinglleft_def;
 ///
 extern string const guilsinglright_def;
 ///
-extern string const paragraphindent_def;
+extern string const paragraphleftindent_def;
 ///
 extern string const floatingfootnote_def;
 ///
Index: src/paragraph.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/paragraph.C,v
retrieving revision 1.202
diff -u -p -r1.202 paragraph.C
--- src/paragraph.C     12 Apr 2002 10:29:12 -0000      1.202
+++ src/paragraph.C     3 May 2002 13:34:13 -0000
@@ -231,7 +231,11 @@ void Paragraph::writeFile(Buffer const *
        // Noindent?
        if (params().noindent())
                os << "\\noindent ";
-
+       
+       // Do we have a manual left indent?
+       if (!params().leftIndent().zero())
+               os << "\\leftindent " << params().leftIndent().asString() << " ";
+       
        // Alignment?
        if (params().align() != LYX_ALIGN_LAYOUT) {
                int h = 0;
@@ -389,6 +393,9 @@ void Paragraph::validate(LaTeXFeatures &
                }
        }
 
+       if (!params().leftIndent().zero())
+               features.require("ParagraphLeftIndent");
+
        // then the insets
        LyXLayout const & lout = textclasslist[bparams.textclass][layout()];
 
@@ -1843,6 +1850,14 @@ Paragraph * Paragraph::TeXEnvironment(Bu
                        texrow.newline();
                }
        }
+       
+       bool leftindent_open = false;
+       if (!params().leftIndent().zero()) {
+               os << "\\begin{LyXParagraphLeftIndent}{" <<
+                       params().leftIndent().asLatexString() << "}\n";
+               texrow.newline();
+               leftindent_open = true;
+       }
 
        if (style.isEnvironment()) {
                if (style.latextype == LATEX_LIST_ENVIRONMENT) {
@@ -1888,13 +1903,19 @@ Paragraph * Paragraph::TeXEnvironment(Bu
                }
        } while (par
                 && par->layout() == layout()
-                && par->params().depth() == params().depth());
+                && par->params().depth() == params().depth()
+                && par->params().leftIndent() == params().leftIndent());
 
        if (style.isEnvironment()) {
                os << "\\end{" << style.latexname() << "}\n";
                texrow.newline();
        }
 
+       if (leftindent_open) {
+               os << "\\end{LyXParagraphLeftIndent}\n";
+               texrow.newline();
+       }
+       
        lyxerr[Debug::LATEX] << "TeXEnvironment...done " << par << endl;
        return par;  // ale970302
 }
Index: src/text.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text.C,v
retrieving revision 1.245
diff -u -p -r1.245 text.C
--- src/text.C  3 May 2002 09:22:07 -0000       1.245
+++ src/text.C  3 May 2002 13:34:16 -0000
@@ -842,6 +842,15 @@ int LyXText::leftMargin(BufferView * bvi
        break;
        }
 
+       if ((workWidth(bview) > 0) &&
+               !row->par()->params().leftIndent().zero())
+       {
+               LyXLength const len = row->par()->params().leftIndent();
+               int const tw = inset_owner ?
+                       inset_owner->latexTextWidth(bview) : workWidth(bview);
+               x += len.inPixels(tw, bview->text->defaultHeight());
+       }
+
        LyXAlignment align; // wrong type
 
        if (row->par()->params().align() == LYX_ALIGN_LAYOUT)

Reply via email to