]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/layout.cpp
Convert all list containers to vectors
[libs/gltk.git] / source / layout.cpp
index 200801f36285b7c3d9ed55402fd764a27f0a8813..4d6b6643a3c630bb99e5c54a25c02e5eb30fff9d 100644 (file)
@@ -37,11 +37,11 @@ private:
                Column();
        };
 
-       unsigned n_columns;
-       unsigned n_rows;
+       unsigned n_columns = 1;
+       unsigned n_rows = 1;
        std::vector<Column> columns;
-       bool solved;
-       bool infeasible;
+       bool solved = false;
+       bool infeasible = false;
 
 public:
        LinearProgram(unsigned);
@@ -85,17 +85,6 @@ Layout::Pointers Layout::pointers[2] =
 } };
 
 
-Layout::Layout():
-       container(0),
-       n_active_slots(0),
-       margin(8),
-       row_spacing(5),
-       col_spacing(4)
-{
-       n_slack_vars[0] = 0;
-       n_slack_vars[1] = 0;
-}
-
 Layout::~Layout()
 {
        for(Slot *s: slots)
@@ -147,7 +136,7 @@ void Layout::push_arrangement(Arrangement &arr)
 Arrangement *Layout::get_arrangement() const
 {
        if(arrangement_stack.empty())
-               return 0;
+               return nullptr;
        else
                return arrangement_stack.back();
 }
@@ -193,8 +182,8 @@ void Layout::remove_widget(Widget &wdg)
                {
                        for(auto k=s->constraints.begin(); k!=s->constraints.end(); )
                        {
-                               if(&k->target==*i)
-                                       s->constraints.erase(k++);
+                               if(k->target==*i)
+                                       k = s->constraints.erase(k);
                                else
                                        ++k;
                        }
@@ -236,7 +225,7 @@ void Layout::update_slot_indices()
                        }
 
                        for(const Constraint &c: s->constraints)
-                               if(c.target.index>s->index && (c.type&SLACK))
+                               if(c.target->index>s->index && (c.type&SLACK))
                                        ++n_slack_vars[c.type&1];
                }
 }
@@ -264,7 +253,7 @@ void Layout::create_constraint(Widget &src, ConstraintType type, Widget &tgt, in
        Slot &tgt_slot = get_slot_for_widget(tgt);
 
        for(const Constraint &c: src_slot.constraints)
-               if(c.type==type && &c.target==&tgt_slot)
+               if(c.type==type && c.target==&tgt_slot)
                        return;
 
        src_slot.constraints.push_back(Constraint(type, tgt_slot));
@@ -434,7 +423,7 @@ void Layout::solve_constraints(int dir, SolveMode mode)
                /* Add rows for user-defined constraints.  Constraints are always added
                in pairs, so it's only necessary to create a row for one half. */
                for(const Constraint &c: s->constraints)
-                       if(c.target.index>s->index && (c.type&1)==dir)
+                       if(c.target->index>s->index && (c.type&1)==dir)
                        {
                                LinearProgram::Row row = linprog.add_row();
                                float polarity = ((c.type&SELF_DIM) ? -1 : 1);
@@ -444,9 +433,9 @@ void Layout::solve_constraints(int dir, SolveMode mode)
                                if(c.type&SELF_DIM)
                                        row[s->index*5+1] = polarity*dim_weight;
                                if(c.type&TARGET_POS)
-                                       row[c.target.index*5] = -polarity;
+                                       row[c.target->index*5] = -polarity;
                                if(c.type&TARGET_DIM)
-                                       row[c.target.index*5+1] = -polarity*dim_weight;
+                                       row[c.target->index*5+1] = -polarity*dim_weight;
                                if(c.type&SPACING)
                                        row.back() = (c.spacing>=0 ? c.spacing : this->*(ptrs.spacing));
                                if(c.type&SLACK)
@@ -481,23 +470,13 @@ void Layout::solve_constraints(int dir, SolveMode mode)
 
 Layout::Constraint::Constraint(ConstraintType t, Slot &s):
        type(t),
-       target(s),
-       spacing(-1)
-{ }
-
-
-Layout::Packing::Packing():
-       gravity(-1),
-       expand(false)
+       target(&s)
 { }
 
 
 Layout::Slot::Slot(Layout &l, Widget &w):
        layout(l),
-       index(0),
-       widget(w),
-       ghost(false),
-       floating(false)
+       widget(w)
 {
        vert_pack.gravity = 1;
        widget.signal_autosize_changed.connect(sigc::mem_fun(this, &Slot::autosize_changed));
@@ -647,10 +626,7 @@ void operator>>(const LexicalConverter &conv, Layout::ConstraintType &ctype)
 
 Layout::LinearProgram::LinearProgram(unsigned s):
        n_columns(s),
-       n_rows(1),
-       columns(n_columns),
-       solved(false),
-       infeasible(false)
+       columns(n_columns)
 { }
 
 Layout::LinearProgram::Row Layout::LinearProgram::add_row()