diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-09-03 07:21:15 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-09-03 07:24:11 -0400 |
commit | a3231e89f05d8e095a93543eca6b71c0427a393e (patch) | |
tree | b11fe9087131c60a9f187333125bc5c6311950bd | |
parent | f121aa00330090895b3c27053c5022a6460fbaf1 (diff) | |
download | gtk+-small-text-fixes.tar.gz |
gtk: Pass font options alongsmall-text-fixes
Pass the widget's font options along when we
are creating text nodes.
-rw-r--r-- | gtk/gskpango.c | 5 | ||||
-rw-r--r-- | gtk/gskpango.h | 2 | ||||
-rw-r--r-- | gtk/gtksnapshot.c | 22 | ||||
-rw-r--r-- | gtk/gtksnapshotprivate.h | 13 |
4 files changed, 26 insertions, 16 deletions
diff --git a/gtk/gskpango.c b/gtk/gskpango.c index e96c84a2fc..93aba75f60 100644 --- a/gtk/gskpango.c +++ b/gtk/gskpango.c @@ -100,6 +100,7 @@ gsk_pango_renderer_draw_glyph_item (PangoRenderer *renderer, get_color (crenderer, PANGO_RENDER_PART_FOREGROUND, &color); gtk_snapshot_append_text (crenderer->snapshot, + crenderer->options, glyph_item->item->analysis.font, glyph_item->glyphs, &color, @@ -467,14 +468,18 @@ gtk_snapshot_append_layout (GtkSnapshot *snapshot, const GdkRGBA *color) { GskPangoRenderer *crenderer; + PangoContext *context; g_return_if_fail (snapshot != NULL); g_return_if_fail (PANGO_IS_LAYOUT (layout)); crenderer = gsk_pango_renderer_acquire (); + context = pango_layout_get_context (layout); + crenderer->snapshot = snapshot; crenderer->fg_color = color; + crenderer->options = pango_cairo_context_get_font_options (context); pango_renderer_draw_layout (PANGO_RENDERER (crenderer), layout, 0, 0); diff --git a/gtk/gskpango.h b/gtk/gskpango.h index 672128d1c1..05fa2254a0 100644 --- a/gtk/gskpango.h +++ b/gtk/gskpango.h @@ -63,6 +63,8 @@ struct _GskPangoRenderer /* Error underline color for this widget */ GdkRGBA *error_color; + const cairo_font_options_t *options; + GskPangoRendererState state; guint is_cached_renderer : 1; diff --git a/gtk/gtksnapshot.c b/gtk/gtksnapshot.c index 5ebb37f14f..b3935f5ff7 100644 --- a/gtk/gtksnapshot.c +++ b/gtk/gtksnapshot.c @@ -2121,22 +2121,24 @@ gtk_snapshot_render_layout (GtkSnapshot *snapshot, } void -gtk_snapshot_append_text (GtkSnapshot *snapshot, - PangoFont *font, - PangoGlyphString *glyphs, - const GdkRGBA *color, - float x, - float y) +gtk_snapshot_append_text (GtkSnapshot *snapshot, + const cairo_font_options_t *options, + PangoFont *font, + PangoGlyphString *glyphs, + const GdkRGBA *color, + float x, + float y) { GskRenderNode *node; float dx, dy; gtk_snapshot_ensure_translate (snapshot, &dx, &dy); - node = gsk_text_node_new (font, - glyphs, - color, - &GRAPHENE_POINT_INIT (x + dx, y + dy)); + node = gsk_text_node_new_full (options, + font, + glyphs, + color, + &GRAPHENE_POINT_INIT (x + dx, y + dy)); if (node == NULL) return; diff --git a/gtk/gtksnapshotprivate.h b/gtk/gtksnapshotprivate.h index 99714c5a99..ca32df1a52 100644 --- a/gtk/gtksnapshotprivate.h +++ b/gtk/gtksnapshotprivate.h @@ -24,12 +24,13 @@ G_BEGIN_DECLS -void gtk_snapshot_append_text (GtkSnapshot *snapshot, - PangoFont *font, - PangoGlyphString *glyphs, - const GdkRGBA *color, - float x, - float y); +void gtk_snapshot_append_text (GtkSnapshot *snapshot, + const cairo_font_options_t *options, + PangoFont *font, + PangoGlyphString *glyphs, + const GdkRGBA *color, + float x, + float y); void gtk_snapshot_push_collect (GtkSnapshot *snapshot); GskRenderNode * gtk_snapshot_pop_collect (GtkSnapshot *snapshot); |