From 812616e1001f7d2c687f3af2d288561e85bfdaca Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Thu, 17 Dec 2009 17:42:21 +0000 Subject: [PATCH] Revert r32566 and r32568. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32569 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/mathed/InsetMathExInt.h | 6 ++---- src/mathed/MathExtern.cpp | 30 +++++++++++++----------------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/mathed/InsetMathExInt.h b/src/mathed/InsetMathExInt.h index c2bc39e8a1..ced825b890 100644 --- a/src/mathed/InsetMathExInt.h +++ b/src/mathed/InsetMathExInt.h @@ -17,7 +17,7 @@ // or \sum, \prod... for interfacing external programs #include "InsetMathNest.h" -#include "support/strfwd.h" + namespace lyx { @@ -57,13 +57,11 @@ public: void write(WriteStream & os) const; /// InsetCode lyxCode() const { return MATH_EXINT_CODE; } - /// is this a sum, product, or whatever that we can handle? - /// note that this does not include integrals. - static bool isExIntOperator(docstring const &); private: virtual Inset * clone() const; /// bool hasScripts() const; + /// docstring symbol_; }; diff --git a/src/mathed/MathExtern.cpp b/src/mathed/MathExtern.cpp index 3d85c02a89..0dd9ecd230 100644 --- a/src/mathed/MathExtern.cpp +++ b/src/mathed/MathExtern.cpp @@ -80,6 +80,7 @@ typedef bool TestItemFunc(MathAtom const &); typedef MathAtom ReplaceArgumentFunc(const MathData & ar); + // try to extract a super/subscript // modify iterator position to point behind the thing bool extractScript(MathData & ar, @@ -355,7 +356,7 @@ void splitScripts(MathData & ar) // leave alone sums and integrals InsetMathSymbol const * sym = script->nuc().front()->asSymbolInset(); - if (sym && (InsetMathExInt::isExIntOperator(sym->name()) || sym->name() == "int")) + if (sym && (sym->name() == "sum" || sym->name() == "int")) continue; } @@ -704,29 +705,25 @@ bool testEqualSign(MathAtom const & at) } -bool testSumLikeSymbol(MathAtom const & p) +bool testSumSymbol(MathAtom const & p) { - return InsetMathExInt::isExIntOperator(p->name()); + return testSymbol(p, from_ascii("sum")); } -docstring testSumLike(MathAtom const & at) +bool testSum(MathAtom const & at) { - if (testSumLikeSymbol(at)) - return at->name(); - if ( at->asScriptInset() + return + testSumSymbol(at) || + ( at->asScriptInset() && at->asScriptInset()->nuc().size() - && testSumLikeSymbol(at->asScriptInset()->nuc().back()) ) - return at->asScriptInset()->nuc().back()->name(); - return docstring(); + && testSumSymbol(at->asScriptInset()->nuc().back()) ); } // replace '\sum' ['_^'] f(x) sequences by a real InsetMathExInt -// and similar things, like \prod. The things we extract are -// determined by InsetMathExInt::isExIntOperator(). // assume 'extractDelims' ran before -void extractSumLike(MathData & ar) +void extractSums(MathData & ar) { // we need at least two items... if (ar.size() < 2) @@ -739,12 +736,11 @@ void extractSumLike(MathData & ar) MathData::iterator it = ar.begin() + i; // is this a sum name? - docstring const opname = testSumLike(ar[i]); - if (opname.empty()) + if (!testSum(ar[i])) continue; // create a proper inset as replacement - auto_ptr p(new InsetMathExInt(buf, opname)); + auto_ptr p(new InsetMathExInt(buf, from_ascii("sum"))); // collect lower bound and summation index InsetMathScript const * sub = ar[i]->asScriptInset(); @@ -953,7 +949,7 @@ void extractStructure(MathData & ar, ExternalMath kind) splitScripts(ar); extractDelims(ar); extractIntegrals(ar, kind); - extractSumLike(ar); + extractSums(ar); extractNumbers(ar); extractMatrices(ar); extractFunctions(ar, kind); -- 2.39.2