summaryrefslogtreecommitdiff
path: root/frontends/gtk
diff options
context:
space:
mode:
authorMichael Drake <michael.drake@codethink.co.uk>2017-04-11 16:03:23 +0100
committerMichael Drake <michael.drake@codethink.co.uk>2017-04-11 16:13:13 +0100
commit90100bbd45be8e3bc45f258a32a24f433cadbd70 (patch)
treeb05b572b4f4a32d463b4bff464f3d66e2a6e8537 /frontends/gtk
parent5d5081eb5788315f8ce7b60af05fe6d071672edd (diff)
downloadnetsurf-90100bbd45be8e3bc45f258a32a24f433cadbd70.tar.gz
netsurf-90100bbd45be8e3bc45f258a32a24f433cadbd70.tar.bz2
GTK: Font rendering: Use same pango layout for painting as for measuring.
With this change we are consistent about how the pango layout we use is created. Now it always comes from a pango_layout_new() call on a pango context that comes from gdk_pango_context_get(). Previously the pango layout used for painting came from a call to pango_cairo_create_layout(), which required a global called "current_cr" (a cairo drawing context), which is only valid during redraw (painting). Since it was only valid during painting, this source could not be used for pango layout creation for the measuring code.
Diffstat (limited to 'frontends/gtk')
-rw-r--r--frontends/gtk/layout_pango.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/frontends/gtk/layout_pango.c b/frontends/gtk/layout_pango.c
index bad57d684..5276148e4 100644
--- a/frontends/gtk/layout_pango.c
+++ b/frontends/gtk/layout_pango.c
@@ -226,27 +226,24 @@ nserror nsfont_paint(int x, int y, const char *string, size_t length,
const plot_font_style_t *fstyle)
{
PangoFontDescription *desc;
- PangoLayout *layout;
PangoLayoutLine *line;
if (length == 0)
return NSERROR_OK;
- layout = pango_cairo_create_layout(current_cr);
+ nsfont_pango_check();
desc = nsfont_style_to_description(fstyle);
- pango_layout_set_font_description(layout, desc);
+ pango_layout_set_font_description(nsfont_pango_layout, desc);
pango_font_description_free(desc);
- pango_layout_set_text(layout, string, length);
+ pango_layout_set_text(nsfont_pango_layout, string, length);
- line = pango_layout_get_line_readonly(layout, 0);
+ line = pango_layout_get_line_readonly(nsfont_pango_layout, 0);
cairo_move_to(current_cr, x, y);
nsgtk_set_colour(fstyle->foreground);
pango_cairo_show_layout_line(current_cr, line);
- g_object_unref(layout);
-
return NSERROR_OK;
}