From 01d45382234f272c8bc1d420b2f39c182518f881 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Sun, 10 Jun 2018 21:54:25 +0200 Subject: [PATCH] box: Don't reorder children based on text direction Make :first-child always be the first child, i.e. the leftest one in LTR and the rightest one in RTL. --- gtk/gtkbox.c | 22 ---------------------- testsuite/css/nodes/box-packing.rtl.nodes | 2 +- testsuite/css/nodes/box.rtl.nodes | 4 ++-- testsuite/css/nodes/expander.rtl.nodes | 2 +- 4 files changed, 4 insertions(+), 26 deletions(-) diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c index f89c3fd3bc..fd0ebbb573 100644 --- a/gtk/gtkbox.c +++ b/gtk/gtkbox.c @@ -68,10 +68,6 @@ * # CSS nodes * * GtkBox uses a single CSS node with name box. - * - * In horizontal orientation, the nodes of the children are always arranged - * from left to right. So :first-child will always select the leftmost child, - * regardless of text direction. */ #include "config.h" @@ -145,9 +141,6 @@ static void gtk_box_size_allocate (GtkWidget *widget, const GtkAllocation *allocation, int baseline); -static void gtk_box_direction_changed (GtkWidget *widget, - GtkTextDirection previous_direction); - static void gtk_box_set_property (GObject *object, guint prop_id, const GValue *value, @@ -201,7 +194,6 @@ gtk_box_class_init (GtkBoxClass *class) widget_class->size_allocate = gtk_box_size_allocate; widget_class->measure = gtk_box_measure; - widget_class->direction_changed = gtk_box_direction_changed; container_class->add = gtk_box_add; container_class->remove = gtk_box_remove; @@ -852,9 +844,6 @@ gtk_box_update_child_css_position (GtkBox *box, } reverse = child_info->pack == GTK_PACK_END; - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL && - _gtk_widget_get_direction (GTK_WIDGET (box)) == GTK_TEXT_DIR_RTL) - reverse = !reverse; if (reverse) gtk_css_node_insert_before (gtk_widget_get_css_node (GTK_WIDGET (box)), @@ -866,17 +855,6 @@ gtk_box_update_child_css_position (GtkBox *box, prev ? gtk_widget_get_css_node (prev->widget) : NULL); } -static void -gtk_box_direction_changed (GtkWidget *widget, - GtkTextDirection previous_direction) -{ - GtkBox *box = GTK_BOX (widget); - GtkBoxPrivate *priv = gtk_box_get_instance_private (box); - - if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) - gtk_css_node_reverse_children (gtk_widget_get_css_node (widget)); -} - static void gtk_box_pack (GtkBox *box, GtkWidget *child, diff --git a/testsuite/css/nodes/box-packing.rtl.nodes b/testsuite/css/nodes/box-packing.rtl.nodes index 899e36b762..b95854f098 100644 --- a/testsuite/css/nodes/box-packing.rtl.nodes +++ b/testsuite/css/nodes/box-packing.rtl.nodes @@ -1,5 +1,5 @@ [window.background:dir(rtl)] decoration:dir(rtl) box.horizontal:dir(rtl) - label#end:dir(rtl) label#start:dir(rtl) + label#end:dir(rtl) diff --git a/testsuite/css/nodes/box.rtl.nodes b/testsuite/css/nodes/box.rtl.nodes index 10f899a987..1179f23dc4 100644 --- a/testsuite/css/nodes/box.rtl.nodes +++ b/testsuite/css/nodes/box.rtl.nodes @@ -1,6 +1,6 @@ [window.background:dir(rtl)] decoration:dir(rtl) box.horizontal:dir(rtl) - label#label3:dir(rtl) - label#label2:dir(rtl) label#label1:dir(rtl) + label#label2:dir(rtl) + label#label3:dir(rtl) diff --git a/testsuite/css/nodes/expander.rtl.nodes b/testsuite/css/nodes/expander.rtl.nodes index 7e5b7c853f..30b4804e51 100644 --- a/testsuite/css/nodes/expander.rtl.nodes +++ b/testsuite/css/nodes/expander.rtl.nodes @@ -3,5 +3,5 @@ expander:dir(rtl) box.vertical:dir(rtl) title.horizontal:dir(rtl) - label:dir(rtl) arrow.horizontal:dir(rtl) + label:dir(rtl) -- 2.30.2