X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathCases.cpp;h=0a5fa332b1ab241b7c8a278d0534755f1c335e65;hb=cdc847fd304019a19425a0d5d9d42a556a937097;hp=94a9c0e84bcd28617ba1f71656c90783ac352aab;hpb=b5049e769bba3923cf8e21c980c75b7c00187420;p=lyx.git diff --git a/src/mathed/InsetMathCases.cpp b/src/mathed/InsetMathCases.cpp index 94a9c0e84b..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(); } @@ -163,6 +150,14 @@ void InsetMathCases::mathmlize(MathStream & ms) const } +// FIXME XHTML +// We need a brace here, somehow. +void InsetMathCases::htmlize(HtmlStream & ms) const +{ + InsetMathGrid::htmlize(ms, "class='cases'"); +} + + void InsetMathCases::infoize(odocstream & os) const { os << "Cases "; @@ -173,6 +168,18 @@ void InsetMathCases::validate(LaTeXFeatures & features) const { features.require("amsmath"); InsetMathGrid::validate(features); + if (features.runparams().math_flavor == OutputParams::MathAsHTML) + // CSS based on eLyXer's, with modifications suggested in bug #8755 + features.addCSSSnippet( + "table.cases{display: inline-block; text-align: center; border: none;" + "border-left: thin solid black; vertical-align: middle; padding-left: 0.5ex;}\n" + "table.cases td {text-align: left; border: none;}"); +} + + +int InsetMathCases::displayColSpace(col_type) const +{ + return 20; }