}
}
+static void
+update_pango_alignment (GtkInscription *self)
+{
+ PangoAlignment align;
+ gboolean ltr;
+
+ ltr = _gtk_widget_get_direction (GTK_WIDGET (self)) != GTK_TEXT_DIR_RTL;
+
+ if (self->xalign < 0.33)
+ align = ltr ? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT;
+ else if (self->xalign < 0.67)
+ align = PANGO_ALIGN_CENTER;
+ else
+ align = ltr ? PANGO_ALIGN_RIGHT : PANGO_ALIGN_LEFT;
+
+ pango_layout_set_alignment (self->layout, align);
+}
+
static void
gtk_inscription_update_layout_attributes (GtkInscription *self,
PangoAttrList *css_attrs)
}
}
+static void
+gtk_inscription_direction_changed (GtkWidget *widget,
+ GtkTextDirection previous_direction)
+{
+ GtkInscription *self = GTK_INSCRIPTION (widget);
+
+ GTK_WIDGET_CLASS (gtk_inscription_parent_class)->direction_changed (widget, previous_direction);
+
+ update_pango_alignment (self);
+}
+
static PangoFontMetrics *
gtk_inscription_get_font_metrics (GtkInscription *self)
{
gobject_class->set_property = gtk_inscription_set_property;
widget_class->css_changed = gtk_inscription_css_changed;
+ widget_class->direction_changed = gtk_inscription_direction_changed;
widget_class->measure = gtk_inscription_measure;
widget_class->size_allocate = gtk_inscription_allocate;
widget_class->snapshot = gtk_inscription_snapshot;
self->layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), NULL);
pango_layout_set_wrap (self->layout, PANGO_WRAP_WORD_CHAR);
+ update_pango_alignment (self);
}
/* for a11y */
self->xalign = xalign;
+ update_pango_alignment (self);
+
gtk_widget_queue_draw (GTK_WIDGET (self));
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_XALIGN]);