From 74078920a3feb5ec4f9a36ef642870bec10b5d75 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Wed, 5 Feb 2003 11:44:14 +0000 Subject: [PATCH] fix #860 git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6034 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/mathed/math_parser.C | 6 ++++++ src/mathed/math_xarrowinset.C | 25 +++++++++++++++---------- src/mathed/math_xarrowinset.h | 8 ++++---- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/mathed/math_parser.C b/src/mathed/math_parser.C index 378ed0d64f..fb00252908 100644 --- a/src/mathed/math_parser.C +++ b/src/mathed/math_parser.C @@ -959,6 +959,12 @@ void Parser::parse1(MathGridInset & grid, unsigned flags, } } + 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); diff --git a/src/mathed/math_xarrowinset.C b/src/mathed/math_xarrowinset.C index c99ca2bf24..27584cb01c 100644 --- a/src/mathed/math_xarrowinset.C +++ b/src/mathed/math_xarrowinset.C @@ -12,7 +12,7 @@ MathXArrowInset::MathXArrowInset(string const & name) - : MathNestInset(1), name_(name) + : MathFracbaseInset(), name_(name) {} @@ -24,29 +24,34 @@ MathInset * MathXArrowInset::clone() const 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) << ']'; } diff --git a/src/mathed/math_xarrowinset.h b/src/mathed/math_xarrowinset.h index cf5e7d22f1..fb5d2986e3 100644 --- a/src/mathed/math_xarrowinset.h +++ b/src/mathed/math_xarrowinset.h @@ -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; -- 2.39.2