X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flayout.cpp;h=4d6b6643a3c630bb99e5c54a25c02e5eb30fff9d;hb=762a689d799075c0a10e1633bf95d53de80b4572;hp=200801f36285b7c3d9ed55402fd764a27f0a8813;hpb=b4a3d651f57c46507aaa99a71a14fea15f0e430d;p=libs%2Fgltk.git diff --git a/source/layout.cpp b/source/layout.cpp index 200801f..4d6b664 100644 --- a/source/layout.cpp +++ b/source/layout.cpp @@ -37,11 +37,11 @@ private: Column(); }; - unsigned n_columns; - unsigned n_rows; + unsigned n_columns = 1; + unsigned n_rows = 1; std::vector 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()