From 36678306a01f7c3e1ca7dca3253f82b79d77248a Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 12 May 2015 18:27:19 +0200 Subject: [PATCH] box: Fix RTL styling --- gtk/gtkbox.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c index 3a2fb5ac35..53a52a2803 100644 --- a/gtk/gtkbox.c +++ b/gtk/gtkbox.c @@ -1447,12 +1447,29 @@ gtk_box_invalidate_order_foreach (GtkWidget *widget, *previous = cur; } +static void +gtk_box_invalidate_order_foreach_reverse (GtkWidget *widget, + gpointer prev) +{ + GtkCssNode **previous = prev; + GtkCssNode *cur = gtk_widget_get_css_node (widget); + + if (*previous) + gtk_css_node_set_before (cur, *previous); + + *previous = cur; +} + static void gtk_box_invalidate_order (GtkBox *box) { GtkCssNode *previous = NULL; + gtk_container_foreach (GTK_CONTAINER (box), - gtk_box_invalidate_order_foreach, + (box->priv->orientation == GTK_ORIENTATION_HORIZONTAL + && gtk_widget_get_direction (GTK_WIDGET (box)) == GTK_TEXT_DIR_RTL) + ? gtk_box_invalidate_order_foreach_reverse + : gtk_box_invalidate_order_foreach, &previous); }