[gtk/wip/ebassi/constraint-layout: 55/69] constraint layout: Use stays for natural size



commit b1f0f4478e31fb249140503bb052ceb0825a96de
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Jun 28 22:59:38 2019 +0000

    constraint layout: Use stays for natural size
    
    It makes more sense to treat the natural size
    of both children and guides as stays, since
    we want to meet these values as closely as we
    can, under the circumstances.

 gtk/gtkconstraintguide.c  | 31 +++++++++++++++++--------------
 gtk/gtkconstraintlayout.c | 36 ++++++++++++++++--------------------
 2 files changed, 33 insertions(+), 34 deletions(-)
---
diff --git a/gtk/gtkconstraintguide.c b/gtk/gtkconstraintguide.c
index 02b0a6c660..60220c60f6 100644
--- a/gtk/gtkconstraintguide.c
+++ b/gtk/gtkconstraintguide.c
@@ -119,14 +119,6 @@ gtk_constraint_guide_update_constraint (GtkConstraintGuide *guide,
     GTK_CONSTRAINT_RELATION_LE,
     GTK_CONSTRAINT_RELATION_LE,
   };
-  double weight[LAST_GUIDE_VALUE] = {
-    GTK_CONSTRAINT_WEIGHT_REQUIRED,
-    GTK_CONSTRAINT_WEIGHT_REQUIRED,
-    GTK_CONSTRAINT_WEIGHT_MEDIUM,
-    GTK_CONSTRAINT_WEIGHT_MEDIUM,
-    GTK_CONSTRAINT_WEIGHT_REQUIRED,
-    GTK_CONSTRAINT_WEIGHT_REQUIRED,
-  };
 
   if (!guide->layout)
     return;
@@ -139,12 +131,23 @@ gtk_constraint_guide_update_constraint (GtkConstraintGuide *guide,
     gtk_constraint_solver_remove_constraint (solver, guide->constraints[index]);
 
   var = gtk_constraint_layout_get_attribute (guide->layout, attr[index], "guide", NULL, 
guide->bound_attributes);
-  guide->constraints[index] =
-    gtk_constraint_solver_add_constraint (solver,
-                                          var,
-                                          relation[index],
-                                          gtk_constraint_expression_new (guide->values[index]),
-                                          weight[index]);
+  if (relation[index] == GTK_CONSTRAINT_RELATION_EQ)
+    {
+      gtk_constraint_variable_set_value (var, guide->values[index]);
+      guide->constraints[index] =
+        gtk_constraint_solver_add_stay_variable (solver,
+                                                 var,
+                                                 GTK_CONSTRAINT_WEIGHT_MEDIUM);
+    }
+  else
+    {
+      guide->constraints[index] =
+        gtk_constraint_solver_add_constraint (solver,
+                                              var,
+                                              relation[index],
+                                              gtk_constraint_expression_new (guide->values[index]),
+                                              GTK_CONSTRAINT_WEIGHT_REQUIRED);
+    }
 }
 
 void
diff --git a/gtk/gtkconstraintlayout.c b/gtk/gtkconstraintlayout.c
index 23bf8631c6..b7ed26a435 100644
--- a/gtk/gtkconstraintlayout.c
+++ b/gtk/gtkconstraintlayout.c
@@ -737,12 +737,11 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager,
                                               GTK_CONSTRAINT_WEIGHT_REQUIRED);
       g_ptr_array_add (size_constraints, constraint);
 
+      gtk_constraint_variable_set_value (width_var, nat_req.width);
       constraint =
-gtk_constraint_solver_add_constraint (solver,
-                                              width_var,
-                                              GTK_CONSTRAINT_RELATION_EQ,
-                                              gtk_constraint_expression_new (nat_req.width),
-                                              GTK_CONSTRAINT_WEIGHT_MEDIUM);
+        gtk_constraint_solver_add_stay_variable (solver,
+                                                 width_var,
+                                                 GTK_CONSTRAINT_WEIGHT_MEDIUM);
       g_ptr_array_add (size_constraints, constraint);
 
       height_var = get_child_attribute (self, child, GTK_CONSTRAINT_ATTRIBUTE_HEIGHT);
@@ -755,12 +754,11 @@ gtk_constraint_solver_add_constraint (solver,
                                               GTK_CONSTRAINT_WEIGHT_REQUIRED);
       g_ptr_array_add (size_constraints, constraint);
 
+      gtk_constraint_variable_set_value (height_var, nat_req.height);
       constraint =
-        gtk_constraint_solver_add_constraint (solver,
-                                              height_var,
-                                              GTK_CONSTRAINT_RELATION_EQ,
-                                              gtk_constraint_expression_new (nat_req.height),
-                                              GTK_CONSTRAINT_WEIGHT_MEDIUM);
+        gtk_constraint_solver_add_stay_variable (solver,
+                                                 height_var,
+                                                 GTK_CONSTRAINT_WEIGHT_MEDIUM);
       g_ptr_array_add (size_constraints, constraint);
     }
 
@@ -906,12 +904,11 @@ gtk_constraint_layout_allocate (GtkLayoutManager *manager,
                                               GTK_CONSTRAINT_WEIGHT_REQUIRED);
       g_ptr_array_add (size_constraints, constraint);
 
+      gtk_constraint_variable_set_value (width_var, nat_req.width);
       constraint =
-gtk_constraint_solver_add_constraint (solver,
-                                              width_var,
-                                              GTK_CONSTRAINT_RELATION_EQ,
-                                              gtk_constraint_expression_new (nat_req.width),
-                                              GTK_CONSTRAINT_WEIGHT_MEDIUM);
+        gtk_constraint_solver_add_stay_variable (solver,
+                                                 width_var,
+                                                 GTK_CONSTRAINT_WEIGHT_MEDIUM);
       g_ptr_array_add (size_constraints, constraint);
 
       height_var = get_child_attribute (self, child, GTK_CONSTRAINT_ATTRIBUTE_HEIGHT);
@@ -924,12 +921,11 @@ gtk_constraint_solver_add_constraint (solver,
                                               GTK_CONSTRAINT_WEIGHT_REQUIRED);
       g_ptr_array_add (size_constraints, constraint);
 
+      gtk_constraint_variable_set_value (height_var, nat_req.height);
       constraint =
-        gtk_constraint_solver_add_constraint (solver,
-                                              height_var,
-                                              GTK_CONSTRAINT_RELATION_EQ,
-                                              gtk_constraint_expression_new (nat_req.height),
-                                              GTK_CONSTRAINT_WEIGHT_MEDIUM);
+        gtk_constraint_solver_add_stay_variable (solver,
+                                                 height_var,
+                                                 GTK_CONSTRAINT_WEIGHT_MEDIUM);
       g_ptr_array_add (size_constraints, constraint);
     }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]