summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-09-04 15:35:11 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-09-04 15:42:05 -0400
commita9b81577c67a5beb13d1e1d7f56808bf1fa52cfa (patch)
tree4a1f94d8e1d298075e5ce8edbaf1f453fe2fd9b6 /gtk
parenteaa2dada541eac2e3f34213fa0f10f6246b8af16 (diff)
downloadgtk+-a9b81577c67a5beb13d1e1d7f56808bf1fa52cfa.tar.gz
widget: Provide a helper for updating pango contexts
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkwidget.c18
-rw-r--r--gtk/gtkwidgetprivate.h4
2 files changed, 14 insertions, 8 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 14f5cbf87d..78a282829b 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -6427,9 +6427,10 @@ gtk_widget_get_effective_font_map (GtkWidget *widget)
return pango_cairo_font_map_get_default ();
}
-static gboolean
-update_pango_context (GtkWidget *widget,
- PangoContext *context)
+gboolean
+gtk_widget_update_pango_context (GtkWidget *widget,
+ PangoContext *context,
+ GtkTextDirection direction)
{
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
GtkCssStyle *style = gtk_css_node_get_style (priv->cssnode);
@@ -6455,9 +6456,10 @@ update_pango_context (GtkWidget *widget,
pango_context_set_round_glyph_positions (context, hint_font_metrics);
}
- pango_context_set_base_dir (context,
- _gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ?
- PANGO_DIRECTION_LTR : PANGO_DIRECTION_RTL);
+ if (direction != GTK_TEXT_DIR_NONE)
+ pango_context_set_base_dir (context, direction == GTK_TEXT_DIR_LTR
+ ? PANGO_DIRECTION_LTR
+ : PANGO_DIRECTION_RTL);
pango_cairo_context_set_resolution (context, _gtk_css_number_value_get (style->core->dpi, 100));
@@ -6490,7 +6492,7 @@ gtk_widget_update_default_pango_context (GtkWidget *widget)
if (!context)
return;
- if (update_pango_context (widget, context))
+ if (gtk_widget_update_pango_context (widget, context, _gtk_widget_get_direction (widget)))
gtk_widget_queue_draw (widget);
}
@@ -6631,7 +6633,7 @@ gtk_widget_create_pango_context (GtkWidget *widget)
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
context = pango_font_map_create_context (pango_cairo_font_map_get_default ());
- update_pango_context (widget, context);
+ gtk_widget_update_pango_context (widget, context, _gtk_widget_get_direction (widget));
pango_context_set_language (context, gtk_get_default_language ());
return context;
diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h
index 5110b0263c..e1e336e6e6 100644
--- a/gtk/gtkwidgetprivate.h
+++ b/gtk/gtkwidgetprivate.h
@@ -370,6 +370,10 @@ void gtk_widget_update_orientation (GtkWidget *widget,
void gtk_widget_realize_at_context (GtkWidget *widget);
void gtk_widget_unrealize_at_context (GtkWidget *widget);
+gboolean gtk_widget_update_pango_context (GtkWidget *widget,
+ PangoContext *context,
+ GtkTextDirection direction);
+
/* inline getters */
static inline GtkWidget *