Arrangement *Layout::get_arrangement() const
{
if(arrangement_stack.empty())
- return 0;
+ return nullptr;
else
return arrangement_stack.back();
}
{
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;
}
}
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];
}
}
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));
/* 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);
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)
Layout::Constraint::Constraint(ConstraintType t, Slot &s):
type(t),
- target(s)
+ target(&s)
{ }