Merge branch 'fix-scale-critical' into 'gtk-3-24'

scale: Fix sporadic criticals

See merge request GNOME/gtk!3421
This commit is contained in:
Matthias Clasen
2021-04-11 13:14:21 +00:00

View File

@ -2020,23 +2020,26 @@ gtk_scale_get_layout (GtkScale *scale)
if (!priv->layout && priv->draw_value)
{
PangoLayout *layout;
int min_layout_width;
priv->layout = gtk_widget_create_pango_layout (GTK_WIDGET (scale), NULL);
gtk_css_node_update_layout_attributes (gtk_css_gadget_get_node (priv->value_gadget), priv->layout);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (scale), NULL);
gtk_css_node_update_layout_attributes (gtk_css_gadget_get_node (priv->value_gadget), layout);
gtk_css_gadget_get_preferred_size (priv->value_gadget,
GTK_ORIENTATION_HORIZONTAL, -1,
&min_layout_width, NULL,
NULL, NULL);
pango_layout_set_width (priv->layout, min_layout_width * PANGO_SCALE);
pango_layout_set_width (layout, min_layout_width * PANGO_SCALE);
if (priv->value_pos == GTK_POS_LEFT)
pango_layout_set_alignment (priv->layout, PANGO_ALIGN_RIGHT);
pango_layout_set_alignment (layout, PANGO_ALIGN_RIGHT);
else if (priv->value_pos == GTK_POS_RIGHT)
pango_layout_set_alignment (priv->layout, PANGO_ALIGN_LEFT);
pango_layout_set_alignment (layout, PANGO_ALIGN_LEFT);
else
pango_layout_set_alignment (priv->layout, PANGO_ALIGN_CENTER);
pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);
priv->layout = layout;
}
if (priv->draw_value)