Chromium Code Reviews| Index: ui/gfx/render_text_linux.cc |
| diff --git a/ui/gfx/render_text_linux.cc b/ui/gfx/render_text_linux.cc |
| index e6a1ab725e4cda13a895e29a6fd1decb587d60aa..c9ec9fcbe31aaf2322538060575bd0032c8b9f6e 100644 |
| --- a/ui/gfx/render_text_linux.cc |
| +++ b/ui/gfx/render_text_linux.cc |
| @@ -83,12 +83,25 @@ Size RenderTextLinux::GetStringSize() { |
| EnsureLayout(); |
| int width = 0, height = 0; |
| pango_layout_get_pixel_size(layout_, &width, &height); |
| - return Size(width, height); |
| + // pango_layout_get_pixel_size() returns the minimal size to render the given |
|
msw
2013/07/12 09:36:04
nit: these could be more concise; like "Keep a con
Yuki
2013/07/12 10:29:24
Thanks.
|
| + // text, and the height can be smaller than the font height. This means the |
| + // baseline may change as the content text changes. Since we'd like to keep |
| + // the same baseline as much as possible, we respect the height determined by |
| + // the font list, unless the actual height is higher than the height of the |
| + // font list. |
| + return Size(width, std::max(height, font_list().GetHeight())); |
| } |
| int RenderTextLinux::GetBaseline() { |
| EnsureLayout(); |
| - return PANGO_PIXELS(pango_layout_get_baseline(layout_)); |
| + // pango_layout_get_baseline() returns the baseline based on the minimal size |
| + // to render the given text, and the baseline can be smaller than the font |
| + // baseline. This means the baseline may change as the content text changes. |
| + // Since we'd like to keep the same baseline as much as possible, we respect |
| + // the baseline determined by the font list, unless the actual baseline is |
| + // greater than the baseline of the font list. |
| + return std::max(PANGO_PIXELS(pango_layout_get_baseline(layout_)), |
| + font_list().GetBaseline()); |
| } |
| SelectionModel RenderTextLinux::FindCursorPosition(const Point& point) { |
| @@ -364,8 +377,7 @@ void RenderTextLinux::DrawVisualText(Canvas* canvas) { |
| DCHECK(layout_); |
| // Skia will draw glyphs with respect to the baseline. |
| - Vector2d offset(GetTextOffset() + |
| - Vector2d(0, PANGO_PIXELS(pango_layout_get_baseline(layout_)))); |
| + Vector2d offset(GetTextOffset() + Vector2d(0, GetBaseline())); |
| SkScalar x = SkIntToScalar(offset.x()); |
| SkScalar y = SkIntToScalar(offset.y()); |