[prev in list] [next in list] [prev in thread] [next in thread]
List: lyx-devel
Subject: Re: [patch] cosmetics: change tracker
From: Juergen Spitzmueller <juergen.sp () t-online ! de>
Date: 2005-03-21 10:10:13
Message-ID: 200503211110.14197.juergen.sp () t-online ! de
[Download RAW message or body]
Johnathan Burchill wrote:
> Juergen Spitzmueller wrote:
> > Sun, 20 Mar 2005 08:26:53 -0800
> > The striking-out line for erased text is misplaced in the first row of
> > the main text, since this also includes the top margin, which is not
> > honoured by the strikeout calculation. The attached patch fixes it.
>
> This works for the first row, which looks good. But the next row has its
> strikeout line slightly higher than the first.
One drawback of the hack is that it looks different on every system (dependig
on the settings). On my system, the lines are adjusted correctly.
Anyway, I decided to get rid of the hack and use the default font height
instead (not the actual current font, since then the lines are "jumping" if
the cursor moves into areas with different font sizes).
Personally, I'd rather draw the line not exactly in the middle of the max.
Ascent (char 'M'), but rather in the middle of the char's x-height, since
this looks better especially with lowercase text. That would be
yo_ - font_metrics::ascent('x', text_.defaultfont_) / 2;
instead of
yo_ - font_metrics::maxAscent(text_.defaultfont_) / 2;
but this is a pure matter of taste, of course (and it looks not so good with
bigger font sizes, e.g. headings).
Please test, this should fix all drawing issues.
Jürgen
["ct_cosmetics2.diff" (text/x-diff)]
Index: rowpainter.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/rowpainter.C,v
retrieving revision 1.142
diff -u -r1.142 rowpainter.C
--- rowpainter.C 15 Feb 2005 19:34:44 -0000 1.142
+++ rowpainter.C 21 Mar 2005 10:08:29 -0000
@@ -664,10 +664,9 @@
// if we reach the end of a struck out range, paint it
// we also don't paint across things like tables
if (running_strikeout && (highly_editable_inset || !is_struckout)) {
- // FIXME this should take real text height into account, not
- // the whole row including padding whitespace
- //int const middle = yo_ + (- row_.ascent() + row_.top_of_text()) / 2;
- int const middle = yo_ - row_.ascent() / 2;
+ // calculate 1/2 height of the buffer's default font
+ int const middle =
+ yo_ - font_metrics::maxAscent(text_.defaultfont_) / 2;
pain_.line(last_strikeout_x, middle, int(x_), middle,
LColor::strikeout, Painter::line_solid, Painter::line_thin);
running_strikeout = false;
@@ -718,9 +717,9 @@
// if we reach the end of a struck out range, paint it
if (running_strikeout) {
- //top_of_text = font_metrics::maxAscent(font);
- //int const middle = yo_ - top_of_text() / 2;
- int const middle = yo_ - row_.ascent() / 2;
+ // calculate 1/2 height of the buffer's default font
+ int const middle =
+ yo_ - font_metrics::maxAscent(text_.defaultfont_) / 2;
pain_.line(last_strikeout_x, middle, int(x_), middle,
LColor::strikeout, Painter::line_solid, Painter::line_thin);
running_strikeout = false;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic