summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-01-16 00:19:41 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-01-16 00:19:41 +0000
commite1a308d15104f60a168e62a14215496250300e29 (patch)
tree26a35bcc21ae80960613da6b72ba2089119d6ace
parent141c725489f153d7705de7f208c6acec81bc47af (diff)
parentbbfaacb59872c1de1a84d5ec0eb89573ef4ce055 (diff)
downloadgtk+-e1a308d15104f60a168e62a14215496250300e29.tar.gz
Merge branch 'rtl-margins' into 'master'
Flip margin-start and -end in RTL Closes #3583 See merge request GNOME/gtk!3081
-rw-r--r--gtk/gtkwidget.c5
-rw-r--r--testsuite/reftests/box-flip.css23
-rw-r--r--testsuite/reftests/box-flip.ref.ui28
-rw-r--r--testsuite/reftests/box-flip.ui30
4 files changed, 85 insertions, 1 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 6efcdccc4a..45a3720b18 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -3900,7 +3900,10 @@ gtk_widget_allocate (GtkWidget *widget,
priv->allocated_height = height;
priv->allocated_size_baseline = baseline;
- adjusted.x = priv->margin.left;
+ if (_gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
+ adjusted.x = priv->margin.left;
+ else
+ adjusted.x = priv->margin.right;
adjusted.y = priv->margin.top;
adjusted.width = width - priv->margin.left - priv->margin.right;
adjusted.height = height - priv->margin.top - priv->margin.bottom;
diff --git a/testsuite/reftests/box-flip.css b/testsuite/reftests/box-flip.css
new file mode 100644
index 0000000000..ffda8b0003
--- /dev/null
+++ b/testsuite/reftests/box-flip.css
@@ -0,0 +1,23 @@
+@import "reset-to-defaults.css";
+
+window {
+ background-color: purple;
+}
+
+#red {
+ background-color: red;
+ min-width: 100px;
+ min-height: 100px;
+}
+
+#yellow {
+ background-color: yellow;
+ min-width: 100px;
+ min-height: 100px;
+}
+
+#green {
+ background-color: green;
+ min-width: 100px;
+ min-height: 100px;
+}
diff --git a/testsuite/reftests/box-flip.ref.ui b/testsuite/reftests/box-flip.ref.ui
new file mode 100644
index 0000000000..d962c80327
--- /dev/null
+++ b/testsuite/reftests/box-flip.ref.ui
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <object class="GtkWindow" id="window1">
+ <property name="decorated">0</property>
+ <property name="resizable">0</property>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkDrawingArea">
+ <property name="name">green</property>
+ <property name="margin-end">50</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkDrawingArea">
+ <property name="name">yellow</property>
+ <property name="margin-end">10</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkDrawingArea">
+ <property name="name">red</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/testsuite/reftests/box-flip.ui b/testsuite/reftests/box-flip.ui
new file mode 100644
index 0000000000..8de1030f31
--- /dev/null
+++ b/testsuite/reftests/box-flip.ui
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <object class="GtkWindow" id="window1">
+ <property name="decorated">0</property>
+ <property name="resizable">0</property>
+ <signal name="map" handler="reftest:set_default_direction_rtl" swapped="no"/>
+ <signal name="destroy" handler="reftest:set_default_direction_ltr" swapped="no"/>
+ <child>
+ <object class="GtkBox">
+ <child>
+ <object class="GtkDrawingArea">
+ <property name="name">red</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkDrawingArea">
+ <property name="name">yellow</property>
+ <property name="margin-start">10</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkDrawingArea">
+ <property name="margin-start">50</property>
+ <property name="name">green</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>