X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathDelim.cpp;h=1989d48dc2d9c6d840f810ba0a4123b80834ddb6;hb=59fa0b25928b43c8d32d19a6193dc3bd07716947;hp=0653e88b8c4f8e05631a83b30b8f1f2acab120a5;hpb=01a6d4252b94c3b0a38faf32da1eea9b17cbf3c5;p=lyx.git diff --git a/src/mathed/InsetMathDelim.cpp b/src/mathed/InsetMathDelim.cpp index 0653e88b8c..1989d48dc2 100644 --- a/src/mathed/InsetMathDelim.cpp +++ b/src/mathed/InsetMathDelim.cpp @@ -25,6 +25,8 @@ #include "frontends/FontMetrics.h" +#include + using namespace std; namespace lyx { @@ -43,13 +45,13 @@ static docstring convertDelimToLatexName(docstring const & name) InsetMathDelim::InsetMathDelim(Buffer * buf, docstring const & l, docstring const & r) - : InsetMathNest(buf, 1), left_(l), right_(r) + : InsetMathNest(buf, 1), left_(l), right_(r), dw_(0) {} InsetMathDelim::InsetMathDelim(Buffer * buf, docstring const & l, docstring const & r, MathData const & ar) - : InsetMathNest(buf, 1), left_(l), right_(r) + : InsetMathNest(buf, 1), left_(l), right_(r), dw_(0) { cell(0) = ar; } @@ -67,21 +69,8 @@ void InsetMathDelim::validate(LaTeXFeatures & features) const // The delimiters may be used without \left or \right as well. // Therefore they are listed in lib/symbols, and if they have // requirements, we need to add them here. - MathWordList const & words = mathedWordList(); - MathWordList::const_iterator it = words.find(left_); - if (it != words.end()) - { - docstring const req = it->second.requires; - if (!req.empty()) - features.require(to_ascii(req)); - } - it = words.find(right_); - if (it != words.end()) - { - docstring const req = it->second.requires; - if (!req.empty()) - features.require(to_ascii(req)); - } + validate_math_word(features, left_); + validate_math_word(features, right_); } @@ -102,8 +91,9 @@ void InsetMathDelim::normalize(NormalStream & os) const void InsetMathDelim::metrics(MetricsInfo & mi, Dimension & dim) const { + Changer dummy = mi.base.changeEnsureMath(); Dimension dim0; - cell(0).metrics(mi, dim0); + cell(0).metrics(mi, dim0, false); Dimension t = theFontMetrics(mi.base.font).dimension('I'); int h0 = (t.asc + t.des) / 2; int a0 = max(dim0.asc, t.asc) - h0; @@ -113,7 +103,7 @@ void InsetMathDelim::metrics(MetricsInfo & mi, Dimension & dim) const dw_ = 8; if (dw_ < 4) dw_ = 4; - dim.wid = dim0.width() + 2 * dw_ + 8; + dim.wid = dim0.width() + 2 * dw_ + 2 * mathed_thinmuskip(mi.base.font); dim.asc = max(a0, d0) + h0; dim.des = max(a0, d0) - h0; } @@ -121,13 +111,14 @@ void InsetMathDelim::metrics(MetricsInfo & mi, Dimension & dim) const void InsetMathDelim::draw(PainterInfo & pi, int x, int y) const { + Changer dummy = pi.base.changeEnsureMath(); Dimension const dim = dimension(*pi.base.bv); int const b = y - dim.asc; - cell(0).draw(pi, x + dw_ + 4, y); - mathed_draw_deco(pi, x + 4, b, dw_, dim.height(), left_); - mathed_draw_deco(pi, x + dim.width() - dw_ - 4, + int const skip = mathed_thinmuskip(pi.base.font); + cell(0).draw(pi, x + dw_ + skip, y); + mathed_draw_deco(pi, x + skip / 2, b, dw_, dim.height(), left_); + mathed_draw_deco(pi, x + dim.width() - dw_ - skip / 2, b, dw_, dim.height(), right_); - setPosCache(pi, x, y); } @@ -190,14 +181,25 @@ void InsetMathDelim::mathematica(MathematicaStream & os) const void InsetMathDelim::mathmlize(MathStream & os) const { - os << "" << left_ << "" - << cell(0) << "" << right_ << ""; + os << "" + << "" + << convertDelimToXMLEscape(left_) + << "" + << "\n" + << cell(0) + << "\n" + << "" + << convertDelimToXMLEscape(right_) + << "" + << "\n"; } void InsetMathDelim::htmlize(HtmlStream & os) const { - os << left_ << cell(0) << right_; + os << convertDelimToXMLEscape(left_) + << cell(0) + << convertDelimToXMLEscape(right_); }