#include "debug.h"
#include "frontends/Painter.h"
#include "textpainter.h"
+#include "funcrequest.h"
#include "Lsstream.h"
#include "LaTeXFeatures.h"
#include "support/LAssert.h"
void MathHullInset::metrics(MathMetricsInfo & mi) const
{
- MathFontSetChanger dummy(mi.base, standardFont());
+ MathFontSetChanger dummy1(mi.base, standardFont());
+ MathStyleChanger dummy2(mi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
// let the cells adjust themselves
MathGridInset::metrics(mi);
void MathHullInset::draw(MathPainterInfo & pi, int x, int y) const
{
- MathFontSetChanger dummy(pi.base, standardFont());
+ MathFontSetChanger dummy1(pi.base, standardFont());
+ MathStyleChanger dummy2(pi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
MathGridInset::draw(pi, x + 1, y);
if (numberedType()) {
void MathHullInset::label(row_type row, string const & label)
{
- lyxerr << "setting label '" << label << "' for row " << row << endl;
+ //lyxerr << "setting label '" << label << "' for row " << row << endl;
label_[row] = label;
}
}
-vector<string> MathHullInset::getLabelList() const
+void MathHullInset::getLabelList(std::vector<string> & labels) const
{
- vector<string> res;
for (row_type row = 0; row < nrows(); ++row)
if (!label_[row].empty() && nonum_[row] != 1)
- res.push_back(label_[row]);
- return res;
+ labels.push_back(label_[row]);
}
{
MathArray ar;
for (idx_type i = 0; i < nargs(); ++i)
- ar.push_back(cell(i));
+ ar.append(cell(i));
*this = MathHullInset("simple");
cell(0) = ar;
setDefaults();
// split it "nicely" on the firest relop
pos_type pos = firstRelOp(cell(0));
- cell(1) = MathArray(cell(0), pos, cell(0).size());
+ cell(1) = MathArray(cell(0).begin() + pos, cell(0).end());
cell(0).erase(pos, cell(0).size());
if (cell(1).size()) {
- cell(2) = MathArray(cell(1), 1, cell(1).size());
+ cell(2) = MathArray(cell(1).begin() + 1, cell(1).end());
cell(1).erase(1, cell(1).size());
}
setType("eqnarray");
mutate(newtype);
- } else {
+ } else if (newtype == "multline" || newtype == "gather") {
+ setType(newtype);
+ numbered(0, false);
+ } else {
MathGridInset::addCol(1);
// split it "nicely"
pos_type pos = firstRelOp(cell(0));
} else { // align & Co.
for (row_type row = 0; row < nrows(); ++row) {
idx_type c = 3 * row + 1;
- cell(c).push_back(cell(c + 1));
+ cell(c).append(cell(c + 1));
}
MathGridInset::delCol(2);
setType("align");
lyx::Assert(nonum_.size() == nrows());
lyx::Assert(label_.size() == nrows());
}
+
+
+MathInset::result_type MathHullInset::dispatch
+ (FuncRequest const & cmd, idx_type & idx, pos_type & pos)
+{
+ switch (cmd.action) {
+
+ case LFUN_BREAKLINE:
+ if (type_ == "simple" || type_ == "equation") {
+ mutate("eqnarray");
+ idx = 1;
+ pos = 0;
+ return DISPATCHED_POP;
+ }
+ return MathGridInset::dispatch(cmd, idx, pos);
+
+ case LFUN_MATH_NUMBER:
+ //lyxerr << "toggling all numbers\n";
+ if (display()) {
+ //bv->lockedInsetStoreUndo(Undo::INSERT);
+ bool old = numberedType();
+ 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()) {
+ //bv->lockedInsetStoreUndo(Undo::INSERT);
+ bool old = numbered(row(idx));
+ //bv->owner()->message(old ? _("No number") : _("Number"));
+ numbered(row(idx), !old);
+ //updateLocal(bv, true);
+ }
+ return DISPATCHED;
+
+ default:
+ return UNDISPATCHED;
+ }
+ return UNDISPATCHED;
+}
+