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); }