On Fri, 2006-02-03 at 11:28 +0100, Georg Baum wrote:
> Martin Vermeer wrote:

...

> > I did. Quotes etc. indeed do not get underlined with my patch. So it is
> > wrong. A solution might be to give paintForeignMark an additional
> > "descent" parameter and use that to put the line at the right level.
> 
> Yes, but how do we determine the value of this parameter? We basically need
> a list of insets that need the blue line at the bottom -> huge switch or
> virtual method, or do you see any other possibility?

This is an independent problem, for which an independent, simple patch
is attached. Works for all the insets I could throw at it... but tell me
if I overlooked something.

Should be unproblematic and fixes a regression. Jean-Marc?

- Martin

Index: rowpainter.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/rowpainter.C,v
retrieving revision 1.163
diff -u -p -r1.163 rowpainter.C
--- rowpainter.C	16 Jan 2006 15:17:17 -0000	1.163
+++ rowpainter.C	3 Feb 2006 15:17:05 -0000
@@ -71,7 +71,7 @@ public:
 	void paintText();
 
 private:
-	void paintForeignMark(double orig_x, LyXFont const & font);
+	void paintForeignMark(double orig_x, LyXFont const & font, int desc = 1);
 	void paintHebrewComposeChar(lyx::pos_type & vpos, LyXFont const & font);
 	void paintArabicComposeChar(lyx::pos_type & vpos, LyXFont const & font);
 	void paintChars(lyx::pos_type & vpos, LyXFont font, 
@@ -288,7 +290,7 @@ void RowPainter::paintChars(pos_type & v
 }
 
 
-void RowPainter::paintForeignMark(double orig_x, LyXFont const & font)
+void RowPainter::paintForeignMark(double orig_x, LyXFont const & font, int desc)
 {
 	if (!lyxrc.mark_foreign_language)
 		return;
@@ -297,7 +299,7 @@ void RowPainter::paintForeignMark(double
 	if (font.language() == bv_.buffer()->params().language)
 		return;
 
-	int const y = yo_ + 1;
+	int const y = yo_ + desc;
 	pain_.line(int(orig_x), y, int(x_), y, LColor::language);
 }
 

Index: rowpainter.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/rowpainter.C,v
retrieving revision 1.163
diff -u -p -r1.163 rowpainter.C
--- rowpainter.C	16 Jan 2006 15:17:17 -0000	1.163
+++ rowpainter.C	3 Feb 2006 15:24:49 -0000
@@ -313,7 +315,8 @@ void RowPainter::paintFromPos(pos_type &
 	if (par_.isInset(pos)) {
 		paintInset(pos, orig_font);
 		++vpos;
-		paintForeignMark(orig_x, orig_font);
+		paintForeignMark(orig_x, orig_font,
+			par_.getInset(pos)->descent() + 2);
 		return;
 	}
 

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to