#include <config.h>
-#ifdef __GNUG__
-#pragma implementation
-#endif
#include "math_hullinset.h"
#include "math_mathmlstream.h"
}
-void MathHullInset::metrics(MathMetricsInfo & mi) const
+void MathHullInset::metrics(MetricsInfo & mi) const
{
- MathFontSetChanger dummy1(mi.base, standardFont());
- MathStyleChanger dummy2(mi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
+ FontSetChanger dummy1(mi.base, standardFont());
+ StyleChanger dummy2(mi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
// let the cells adjust themselves
MathGridInset::metrics(mi);
}
if (numberedType()) {
- MathFontSetChanger dummy(mi.base, "mathbf");
+ FontSetChanger dummy(mi.base, "mathbf");
int l = 0;
for (row_type row = 0; row < nrows(); ++row)
l = max(l, mathed_string_width(mi.base.font, nicelabel(row)));
int asc = 0;
int des = 0;
math_font_max_dim(mi.base.font, asc, des);
- dim_.a = max(dim_.a, asc);
+ dim_.a = max(dim_.a, asc);
dim_.d = max(dim_.d, des);
// for markers
}
-void MathHullInset::draw(MathPainterInfo & pi, int x, int y) const
+void MathHullInset::draw(PainterInfo & pi, int x, int y) const
{
- MathFontSetChanger dummy1(pi.base, standardFont());
- MathStyleChanger dummy2(pi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
+ FontSetChanger dummy1(pi.base, standardFont());
+ StyleChanger dummy2(pi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
MathGridInset::draw(pi, x + 1, y);
if (numberedType()) {
int const xx = x + colinfo_.back().offset_ + colinfo_.back().width_ + 20;
for (row_type row = 0; row < nrows(); ++row) {
int const yy = y + rowinfo_[row].offset_;
- MathFontSetChanger dummy(pi.base, "mathrm");
+ FontSetChanger dummy(pi.base, "mathrm");
drawStr(pi, pi.base.font, xx, yy, nicelabel(row));
}
}
features.require("boldsymbol");
//features.binom = true;
- MathNestInset::validate(features);
+ MathGridInset::validate(features);
}
os << "\\[\n";
}
- else if (type_ == "eqnarray" || type_ == "align" || type_ == "flalign")
+ else if (type_ == "eqnarray" || type_ == "align" || type_ == "flalign"
+ || type_ == "gather" || type_ == "multline")
os << "\\begin{" << type_ << star(n) << "}\n";
else if (type_ == "alignat" || type_ == "xalignat")
os << "\\begin{" << type_ << '}'
<< '{' << static_cast<unsigned int>((ncols() + 1)/2) << "}\n";
- else if (type_ == "multline" || type_ == "gather")
- os << "\\begin{" << type_ << "}\n";
-
else
os << "\\begin{unknown" << star(n) << '}';
}
os << "\\]\n";
else if (type_ == "eqnarray" || type_ == "align" || type_ == "flalign"
- || type_ == "alignat" || type_ == "xalignat")
+ || type_ == "alignat" || type_ == "xalignat"
+ || type_ == "gather" || type_ == "multline")
os << "\\end{" << type_ << star(n) << "}\n";
- else if (type_ == "xxalignat" || type_ == "multline" || type_ == "gather")
+ else if (type_ == "xxalignat")
os << "\\end{" << type_ << "}\n";
else
if (numberedType()) {
if (!label_[row].empty() && !nonum_[row])
res += "\\label{" + label_[row] + '}';
- if (nonum_[row])
+ if (nonum_[row] && (type_ != "multline"))
res += "\\nonumber ";
}
return res + MathGridInset::eolString(row, fragile);
}
-MathInset::result_type MathHullInset::dispatch
+dispatch_result MathHullInset::dispatch
(FuncRequest const & cmd, idx_type & idx, pos_type & pos)
{
switch (cmd.action) {
if (display()) {
//bv->lockedInsetStoreUndo(Undo::INSERT);
bool old = numberedType();
- for (row_type row = 0; row < nrows(); ++row)
- numbered(row, !old);
+ if (type_ == "multline")
+ numbered(nrows() - 1, !old);
+ else
+ for (row_type row = 0; row < nrows(); ++row)
+ numbered(row, !old);
//bv->owner()->message(old ? _("No number") : _("Number"));
- //updateLocal(bv, true);
}
return DISPATCHED;
case LFUN_MATH_NONUMBER:
if (display()) {
+ row_type r = (type_ == "multline") ? nrows() - 1 : row(idx);
//bv->lockedInsetStoreUndo(Undo::INSERT);
- bool old = numbered(row(idx));
+ bool old = numbered(r);
//bv->owner()->message(old ? _("No number") : _("Number"));
- numbered(row(idx), !old);
- //updateLocal(bv, true);
+ numbered(r, !old);
}
return DISPATCHED;
case LFUN_INSERT_LABEL: {
- row_type r = row(idx);
+ row_type r = (type_ == "multline") ? nrows() - 1 : row(idx);
string old_label = label(r);
string new_label = cmd.argument;