Hello,

The following patch fixes texrow computation in the case where
paragraph alignment is used. There was a one by one error because a \n
was added to the centering commands (probably in the work to help
Sweave).

The fix is to pass texrow to relevant functions and update it.

I'll commit tomorrow if nobody complains.

JMarc

Index: src/paragraph.C
===================================================================
--- src/paragraph.C	(révision 17332)
+++ src/paragraph.C	(copie de travail)
@@ -792,13 +792,14 @@ string const corrected_env(string const 
 }
 
 
-int adjust_column_count(string const & str, int oldcol)
+void adjust_row_column(string const & str, TexRow & texrow, int & column)
 {
 	if (!contains(str, "\n"))
-		return oldcol + str.size();
+		column += str.size();
 	else {
 		string tmp;
-		return rsplit(str, tmp, '\n').size();
+		texrow.newline();
+		column = rsplit(str, tmp, '\n').size();
 	}
 }
 
@@ -807,7 +808,8 @@ int adjust_column_count(string const & s
 
 // This could go to ParagraphParameters if we want to
 int Paragraph::startTeXParParams(BufferParams const & bparams,
-                                 odocstream & os, bool moving_arg) const
+                                 odocstream & os, TexRow & texrow, 
+				 bool moving_arg) const
 {
 	int column = 0;
 
@@ -845,7 +847,7 @@ int Paragraph::startTeXParParams(BufferP
 		else
 			output = corrected_env("\\begin", "flushright", ownerCode());
 		os << from_ascii(output);
-		column = adjust_column_count(output, column);
+		adjust_row_column(output, texrow, column);
 		break;
 	} case LYX_ALIGN_RIGHT: {
 		string output;
@@ -854,13 +856,13 @@ int Paragraph::startTeXParParams(BufferP
 		else
 			output = corrected_env("\\begin", "flushleft", ownerCode());
 		os << from_ascii(output);
-		column = adjust_column_count(output, column);
+		adjust_row_column(output, texrow, column);
 		break;
 	} case LYX_ALIGN_CENTER: {
 		string output;
 		output = corrected_env("\\begin", "center", ownerCode());
 		os << from_ascii(output);
-		column = adjust_column_count(output, column);
+		adjust_row_column(output, texrow, column);
 		break;
 	}
 	}
@@ -870,8 +872,9 @@ int Paragraph::startTeXParParams(BufferP
 
 
 // This could go to ParagraphParameters if we want to
-int Paragraph::endTeXParParams(BufferParams const & bparams,
-                               odocstream & os, bool moving_arg) const
+int Paragraph::endTeXParParams(BufferParams const & bparams,  
+                               odocstream & os, TexRow & texrow,
+			       bool moving_arg) const
 {
 	int column = 0;
 
@@ -904,7 +907,7 @@ int Paragraph::endTeXParParams(BufferPar
 		else
 			output = corrected_env("\n\\par\\end", "flushright", ownerCode());
 		os << from_ascii(output);
-		column = adjust_column_count(output, column);
+		adjust_row_column(output, texrow, column);
 		break;
 	} case LYX_ALIGN_RIGHT: {
 		string output;
@@ -913,13 +916,13 @@ int Paragraph::endTeXParParams(BufferPar
 		else
 			output = corrected_env("\n\\par\\end", "flushleft", ownerCode());
 		os << from_ascii(output);
-		column = adjust_column_count(output, column);
+		adjust_row_column(output, texrow, column);
 		break;
 	} case LYX_ALIGN_CENTER: {
 		string output;
 		output = corrected_env("\n\\par\\end", "center", ownerCode());
 		os << from_ascii(output);
-		column = adjust_column_count(output, column);
+		adjust_row_column(output, texrow, column);
 		break;
 	}
 	}
@@ -1000,7 +1003,7 @@ bool Paragraph::simpleTeXOnePar(Buffer c
 			++column;
 		}
 		if (!asdefault)
-			column += startTeXParParams(bparams, os,
+			column += startTeXParParams(bparams, os, texrow,
 						    runparams.moving_arg);
 	}
 
@@ -1031,7 +1034,8 @@ bool Paragraph::simpleTeXOnePar(Buffer c
 			}
 
 			if (!asdefault)
-				column += startTeXParParams(bparams, os,
+				column += startTeXParParams(bparams, os, 
+							    texrow,
 							    runparams.moving_arg);
 		}
 
@@ -1140,7 +1144,8 @@ bool Paragraph::simpleTeXOnePar(Buffer c
 	}
 
 	if (!asdefault) {
-		column += endTeXParParams(bparams, os, runparams.moving_arg);
+		column += endTeXParParams(bparams, os, texrow, 
+					  runparams.moving_arg);
 	}
 
 	lyxerr[Debug::LATEX] << "SimpleTeXOnePar...done " << this << endl;
Index: src/paragraph.h
===================================================================
--- src/paragraph.h	(révision 17332)
+++ src/paragraph.h	(copie de travail)
@@ -115,10 +115,12 @@ public:
 	void validate(LaTeXFeatures &) const;
 
 	///
-	int startTeXParParams(BufferParams const &, odocstream &, bool) const;
+	int startTeXParParams(BufferParams const &, odocstream &, TexRow &, 
+			      bool) const;
 
 	///
-	int endTeXParParams(BufferParams const &, odocstream &, bool) const;
+	int endTeXParParams(BufferParams const &, odocstream &, TexRow &, 
+			    bool) const;
 
 
 	///

Reply via email to