diff --git a/gtk/gtkconstraintlayout.c b/gtk/gtkconstraintlayout.c index a111dbe591..54056bf73c 100644 --- a/gtk/gtkconstraintlayout.c +++ b/gtk/gtkconstraintlayout.c @@ -693,7 +693,7 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager, child_info = GTK_CONSTRAINT_LAYOUT_CHILD (gtk_layout_manager_get_layout_child (manager, child)); - gtk_widget_measure (child, orientation, for_size, + gtk_widget_measure (child, orientation, -1, &min_size, &nat_size, NULL, NULL); @@ -769,15 +769,15 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager, * natural state of the system. Once we get the value out, we can * remove these constraints */ - gtk_constraint_solver_add_edit_variable (solver, size, GTK_CONSTRAINT_WEIGHT_WEAK + 1); - gtk_constraint_solver_add_edit_variable (solver, opposite_size, GTK_CONSTRAINT_WEIGHT_WEAK + 2); - - gtk_constraint_solver_begin_edit (solver); - - gtk_constraint_solver_suggest_value (solver, size, 0.0); - gtk_constraint_solver_suggest_value (solver, opposite_size, for_size >= 0 ? for_size : 0.0); - - gtk_constraint_solver_resolve (solver); + if (for_size > 0) + { + gtk_constraint_solver_add_edit_variable (solver, opposite_size, GTK_CONSTRAINT_WEIGHT_MEDIUM * 2.0); + gtk_constraint_solver_begin_edit (solver); + gtk_constraint_solver_suggest_value (solver, opposite_size, for_size); + gtk_constraint_solver_resolve (solver); + gtk_constraint_solver_remove_edit_variable (solver, opposite_size); + gtk_constraint_solver_end_edit (solver); + } GTK_NOTE (LAYOUT, g_print ("layout %p preferred %s size: %.3f (for opposite size: %d)\n", @@ -788,11 +788,6 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager, value = gtk_constraint_variable_get_value (size); - gtk_constraint_solver_remove_edit_variable (solver, size); - gtk_constraint_solver_remove_edit_variable (solver, opposite_size); - - gtk_constraint_solver_end_edit (solver); - for (guint i = 0; i < size_constraints->len; i++) { GtkConstraintRef *ref = g_ptr_array_index (size_constraints, i);