X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FMathData.cpp;h=610a3e20eb64ebae7e237f77baa6c67ccf8ff5bf;hb=43b16548b473d93b26489d8c4bbd9bf1e903a35f;hp=42aa3cbb9b15b6b4c6940cd9e6f175c1b6833538;hpb=3c4e567d44e48ccfbbd1e47e7a138bd782153bf2;p=lyx.git diff --git a/src/mathed/MathData.cpp b/src/mathed/MathData.cpp index 42aa3cbb9b..610a3e20eb 100644 --- a/src/mathed/MathData.cpp +++ b/src/mathed/MathData.cpp @@ -27,6 +27,7 @@ #include "BufferView.h" #include "CoordCache.h" #include "Cursor.h" +#include "Dimension.h" #include "mathed/InsetMathUnknown.h" @@ -37,7 +38,6 @@ #include "support/docstream.h" #include "support/gettext.h" #include "support/lassert.h" -#include "support/lyxalgo.h" #include @@ -47,8 +47,7 @@ namespace lyx { MathData::MathData(Buffer * buf, const_iterator from, const_iterator to) - : base_type(from, to), minasc_(0), mindes_(0), slevel_(0), - sshift_(0), buffer_(buf) + : base_type(from, to), buffer_(buf) {} @@ -295,10 +294,12 @@ void MathData::metrics(MetricsInfo & mi, Dimension & dim, bool tight) const // This is one of the the few points where the drawing font is known, // so that we can set the caret vertical dimensions. - mrow.caret_ascent = min(dim.asc, fm.maxAscent()); - mrow.caret_descent = min(dim.des, fm.maxDescent()); + mrow.caret_dim.asc = min(dim.asc, fm.maxAscent()); + mrow.caret_dim.des = min(dim.des, fm.maxDescent()); + mrow.caret_dim.wid = fm.lineWidth(); + /// do the same for math cells linearized in the row - MathRow caret_row = MathRow(mrow.caret_ascent, mrow.caret_descent); + MathRow caret_row = MathRow(mrow.caret_dim); for (auto const & e : mrow) if (e.type == MathRow::BEGIN && e.ar) bv->setMathRow(e.ar, caret_row); @@ -372,9 +373,9 @@ void MathData::drawT(TextPainter & pain, int x, int y) const // FIXME: Abdel 16/10/2006 // This drawT() method is never used, this is dead code. - for (const_iterator it = begin(), et = end(); it != et; ++it) { - (*it)->drawT(pain, x, y); - //x += (*it)->width_; + for (auto const & it : *this) { + it->drawT(pain, x, y); + //x += it->width_; x += 2; } } @@ -966,6 +967,18 @@ MathClass MathData::mathClass() const } +MathClass MathData::lastMathClass() const +{ + MathClass res = MC_ORD; + for (MathAtom const & at : *this) { + MathClass mc = at->mathClass(); + if (mc != MC_UNKNOWN) + res = mc; + } + return res; +} + + ostream & operator<<(ostream & os, MathData const & ar) { odocstringstream oss;