]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/layout.cpp
Add centering constraints to Layout
[libs/gltk.git] / source / layout.cpp
index 4048e1147ac9321ab2596d1441db26b102e55a82..ce9c8dcc9831afd3aaf0af1d345d5b40490d35ab 100644 (file)
@@ -439,14 +439,15 @@ void Layout::solve_constraints(int dir, SolveMode mode)
                        {
                                LinearProgram::Row row = linprog.add_row();
                                float polarity = ((j->type&SELF_DIM) ? -1 : 1);
+                               float dim_weight = ((j->type&HALF_DIM) ? 0.5f : 1);
                                if(j->type&SELF_POS)
                                        row[(*i)->index*5] = polarity;
                                if(j->type&SELF_DIM)
-                                       row[(*i)->index*5+1] = polarity;
+                                       row[(*i)->index*5+1] = polarity*dim_weight;
                                if(j->type&TARGET_POS)
                                        row[j->target.index*5] = -polarity;
                                if(j->type&TARGET_DIM)
-                                       row[j->target.index*5+1] = -polarity;
+                                       row[j->target.index*5+1] = -polarity*dim_weight;
                                if(j->type&SPACING)
                                        row.back() = (j->spacing>=0 ? j->spacing : this->*(ptrs.spacing));
                                if(j->type&SLACK)