X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathCases.cpp;h=0a5fa332b1ab241b7c8a278d0534755f1c335e65;hb=ebd4e25588f61c7f566be6d7800b9e6c4bbcdeb1;hp=8d56df5369c680c2d0475d381b69f9917aeba955;hpb=f835e2a6f94584efe8ee63ed73cdc45bcd7bb05c;p=lyx.git diff --git a/src/mathed/InsetMathCases.cpp b/src/mathed/InsetMathCases.cpp index 8d56df5369..0a5fa332b1 100644 --- a/src/mathed/InsetMathCases.cpp +++ b/src/mathed/InsetMathCases.cpp @@ -45,40 +45,29 @@ Inset * InsetMathCases::clone() const void InsetMathCases::metrics(MetricsInfo & mi, Dimension & dim) const { + Changer dummy = mi.base.changeEnsureMath(); InsetMathGrid::metrics(mi, dim); - dim.wid += 8; -} - - -Dimension const InsetMathCases::dimension(BufferView const & bv) const -{ - Dimension dim = InsetMathGrid::dimension(bv); - dim.wid += 8; - return dim; } void InsetMathCases::draw(PainterInfo & pi, int x, int y) const { + Changer dummy = pi.base.changeEnsureMath(); Dimension const dim = dimension(*pi.base.bv); mathed_draw_deco(pi, x + 1, y - dim.ascent(), 6, dim.height(), from_ascii("{")); - InsetMathGrid::drawWithMargin(pi, x, y, 8, 0); - setPosCache(pi, x, y); + InsetMathGrid::draw(pi, x, y); } void InsetMathCases::doDispatch(Cursor & cur, FuncRequest & cmd) { //lyxerr << "*** InsetMathCases: request: " << cmd << endl; - switch (cmd.action) { - case LFUN_INSET_MODIFY: { - istringstream is(to_utf8(cmd.argument())); - string s; - is >> s; - if (s != "tabular") - break; - is >> s; + switch (cmd.action()) { + case LFUN_TABULAR_FEATURE: { + string s = cmd.getArg(0); // vertical lines and adding/deleting columns is not allowed for \cases + // FIXME: "I suspect that the break after cur.undispatched() should be a + // return; the recordUndo seems bogus too." (lasgouttes) if (s == "append-column" || s == "delete-column" || s == "add-vline-left" || s == "add-vline-right") { cur.undispatched(); @@ -96,14 +85,9 @@ void InsetMathCases::doDispatch(Cursor & cur, FuncRequest & cmd) bool InsetMathCases::getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus & flag) const { - switch (cmd.action) { - case LFUN_INSET_MODIFY: { - istringstream is(to_utf8(cmd.argument())); - string s; - is >> s; - if (s != "tabular") - break; - is >> s; + switch (cmd.action()) { + case LFUN_TABULAR_FEATURE: { + string s = cmd.getArg(0); if (s == "add-vline-left" || s == "add-vline-right") { flag.setEnabled(false); flag.message(bformat( @@ -132,11 +116,14 @@ void InsetMathCases::write(WriteStream & os) const MathEnsurer ensurer(os); if (os.fragile()) os << "\\protect"; + bool open = os.startOuterRow(); os << "\\begin{cases}\n"; InsetMathGrid::write(os); if (os.fragile()) os << "\\protect"; os << "\\end{cases}"; + if (open) + os.startOuterRow(); } @@ -167,7 +154,7 @@ void InsetMathCases::mathmlize(MathStream & ms) const // We need a brace here, somehow. void InsetMathCases::htmlize(HtmlStream & ms) const { - InsetMathGrid::htmlize(ms, "cases"); + InsetMathGrid::htmlize(ms, "class='cases'"); } @@ -181,13 +168,18 @@ void InsetMathCases::validate(LaTeXFeatures & features) const { features.require("amsmath"); InsetMathGrid::validate(features); - if (features.runparams().flavor == OutputParams::HTML) - // CSS based on eLyXer's - features.addPreambleSnippet(""); + "table.cases td {text-align: left; border: none;}"); +} + + +int InsetMathCases::displayColSpace(col_type) const +{ + return 20; }