}
}
+static InsetLabel * dummy_pointer = 0;
InsetMathHull::InsetMathHull()
- : InsetMathGrid(1, 1), type_(hullNone), nonum_(1, false), label_(1, 0),
+ : InsetMathGrid(1, 1), type_(hullNone), nonum_(1, false), label_(1, dummy_pointer),
preview_(new RenderPreview(this))
{
//lyxerr << "sizeof InsetMath: " << sizeof(InsetMath) << endl;
InsetMathHull::InsetMathHull(HullType type)
- : InsetMathGrid(getCols(type), 1), type_(type), nonum_(1, false), label_(1, 0),
+ : InsetMathGrid(getCols(type), 1), type_(type), nonum_(1, false), label_(1, dummy_pointer),
preview_(new RenderPreview(this))
{
initMath();
InsetMathHull::~InsetMathHull()
{
- for (size_t i = 0; i < label_.size(); ++i) {
- if (label_[i])
- delete label_[i];
- }
+ for (size_t i = 0; i < label_.size(); ++i)
+ delete label_[i];
}
InsetMathGrid::operator=(other);
type_ = other.type_;
nonum_ = other.nonum_;
- for (size_t i = 0; i < label_.size(); ++i) {
- if (label_[i])
- delete label_[i];
- }
+ for (size_t i = 0; i < label_.size(); ++i)
+ delete label_[i];
label_ = other.label_;
for (size_t i = 0; i != label_.size(); ++i) {
if (label_[i])
void InsetMathHull::setBuffer(Buffer & buffer)
{
buffer_ = &buffer;
+ for (idx_type i = 0, n = nargs(); i != n; ++i) {
+ MathData & data = cell(i);
+ for (size_t j = 0; j != data.size(); ++j)
+ data[j].nucleus()->setBuffer(buffer);
+ }
+
for (size_t i = 0; i != label_.size(); ++i) {
if (label_[i])
label_[i]->setBuffer(buffer);
if (!rowChangeOK())
return;
nonum_.insert(nonum_.begin() + row + 1, !numberedType());
- label_.insert(label_.begin() + row + 1, 0);
+ label_.insert(label_.begin() + row + 1, dummy_pointer);
InsetMathGrid::addRow(row);
}
return;
if (row + 1 == nrows())
--row;
- swap(nonum_[row], nonum_[row + 1]);
+ // gcc doesn't like this:
+ // swap(nonum_[row], nonum_[row + 1]);
+ // so we do it manually:
+ bool const b = nonum_[row];
+ nonum_[row] = nonum_[row + 1];
+ nonum_[row + 1] = b;
swap(label_[row], label_[row + 1]);
InsetMathGrid::swapRow(row);
}
if (row == nrows() + 1)
row--;
nonum_.erase(nonum_.begin() + row);
- if (label_[row])
- delete label_[row];
+ delete label_[row];
label_.erase(label_.begin() + row);
}
docstring res;
if (numberedType()) {
if (label_[row] && !nonum_[row])
- res += "\\label{" + label_[row]->screenLabel() + '}';
+ res += "\\label{" + label_[row]->getParam("name") + '}';
if (nonum_[row] && (type_ != hullMultline))
res += "\\nonumber ";
}