It still fixes a bug.
Index: math_xarrowinset.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/mathed/math_xarrowinset.C,v retrieving revision 1.5 diff -u -p -r1.5 math_xarrowinset.C --- math_xarrowinset.C 2 Aug 2002 14:29:42 -0000 1.5 +++ math_xarrowinset.C 31 Jan 2003 11:04:43 -0000 @@ -12,7 +12,7 @@ MathXArrowInset::MathXArrowInset(string const & name) - : MathNestInset(1), name_(name) + : MathFracbaseInset(), name_(name) {} @@ -24,29 +24,34 @@ MathInset * MathXArrowInset::clone() con void MathXArrowInset::metrics(MathMetricsInfo & mi) const { - //MathMetricsInfo mi = st; - //smallerStyleScript(mi); + MathScriptChanger dummy(mi.base); cell(0).metrics(mi); - dim_.w = cell(0).width() + 10; + cell(1).metrics(mi); + dim_.w = std::max(cell(0).width(), cell(1).width()) + 10; dim_.a = cell(0).height() + 10; - dim_.d = 0; + dim_.d = cell(1).height(); } -void MathXArrowInset::draw(MathPainterInfo & pain, int x, int y) const +void MathXArrowInset::draw(MathPainterInfo & pi, int x, int y) const { - cell(0).draw(pain, x + 5, y - 10); - mathed_draw_deco(pain, x + 1, y - 7, width() - 2, 5, name_); + MathScriptChanger dummy(pi.base); + cell(0).draw(pi, x + 5, y - 10); + cell(1).draw(pi, x + 5, y + cell(1).height()); + mathed_draw_deco(pi, x + 1, y - 7, width() - 2, 5, name_); } void MathXArrowInset::write(WriteStream & os) const { - os << '\\' << name_ << '{' << cell(0) << '}'; + os << '\\' << name_; + if (cell(1).size()) + os << '[' << cell(1) << ']'; + os << '{' << cell(0) << '}'; } void MathXArrowInset::normalize(NormalStream & os) const { - os << "[xarrow " << name_ << ' ' << cell(0) << ']'; + os << "[xarrow " << name_ << ' ' << cell(0) << ' ' << cell(1) << ']'; } Index: math_xarrowinset.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/mathed/math_xarrowinset.h,v retrieving revision 1.3 diff -u -p -r1.3 math_xarrowinset.h --- math_xarrowinset.h 11 Sep 2002 08:26:02 -0000 1.3 +++ math_xarrowinset.h 31 Jan 2003 11:04:43 -0000 @@ -2,7 +2,7 @@ #ifndef MATH_XARROWINSET_H #define MATH_XARROWINSET_H -#include "math_nestinset.h" +#include "math_fracbase.h" #include "LString.h" #ifdef __GNUG__ @@ -15,18 +15,18 @@ * Full author contact details are available in file CREDITS */ -class MathXArrowInset : public MathNestInset { +class MathXArrowInset : public MathFracbaseInset { public: /// explicit MathXArrowInset(string const & name); /// MathInset * clone() const; /// - void draw(MathPainterInfo &, int x, int y) const; + void draw(MathPainterInfo & pi, int x, int y) const; /// void write(WriteStream & os) const; /// - void metrics(MathMetricsInfo & st) const; + void metrics(MathMetricsInfo & mi) const; /// void normalize(NormalStream & os) const; Index: math_parser.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/mathed/math_parser.C,v retrieving revision 1.258 diff -u -p -r1.258 math_parser.C --- math_parser.C 18 Dec 2002 10:57:45 -0000 1.258 +++ math_parser.C 31 Jan 2003 11:04:43 -0000 @@ -959,6 +959,12 @@ void Parser::parse1(MathGridInset & grid } } + else if (t.cs() == "xrightarrow" || t.cs() == "xleftarrow") { + cell->push_back(createMathInset(t.cs())); + parse(cell->back().nucleus()->cell(1), FLAG_OPTION, mode); + parse(cell->back().nucleus()->cell(0), FLAG_ITEM, mode); + } + else if (t.cs() == "ref") { cell->push_back(MathAtom(new RefInset)); parse(cell->back().nucleus()->cell(1), FLAG_OPTION, mode);