commit 417139f4da6532c278d3744f191b33804ee26ea0
Author: Georg Baum <[email protected]>
Date:   Sun Mar 29 14:50:37 2015 +0200

    Remove InsetMathSqrt hack from MathMacro
    
    The expanded cells of a mathmacro were previously stored in an 
InsetMathSqrt.
    This was only used as a container for the MathData object in the first cell
    of the sqrt inset, which contained the actual expanded arguments.
    Funny enough, the only place were the inset property of expanded_ was really
    used cannot be seen in the diff. It was MathMacro::kerning(), and this usage
    was wrong, since InsetMathSqrt::kerning() always returns 0. Threfore, using
    the correct type (MathData) for expanded_ does not only make the code more
    readable, gets rid of an unneeded dependency, but also fixes a bug: Now the
    correct kerning is returned for expanded cells. Also, expanded_ and
    definition_ use the same type now, which looks nicely symmetric.

diff --git a/src/mathed/MathMacro.cpp b/src/mathed/MathMacro.cpp
index dd749ca..b23be09 100644
--- a/src/mathed/MathMacro.cpp
+++ b/src/mathed/MathMacro.cpp
@@ -146,7 +146,7 @@ Inset * MathMacro::clone() const
 {
        MathMacro * copy = new MathMacro(*this);
        copy->needsUpdate_ = true;
-       //copy->expanded_.cell(0).clear();
+       //copy->expanded_.clear();
        return copy;
 }
 
@@ -269,7 +269,7 @@ void MathMacro::metrics(MetricsInfo & mi, Dimension & dim) 
const
 
                // calculate metrics, hoping that all cells are seen
                macro_->lock();
-               expanded_.cell(0).metrics(mi, dim);
+               expanded_.metrics(mi, dim);
 
                // otherwise do a manual metrics call
                CoordCache & coords = mi.base.bv->coordCache();
@@ -385,9 +385,9 @@ void MathMacro::updateRepresentation(Cursor * cur, 
MacroContext const & mc,
        // in this case, since MacroData::expand() creates new MathMacro
        // objects, so this would be a different recursion path than the one
        // protected by UpdateLocker.
-       if (macro_->expand(values, expanded_.cell(0))) {
-               if (utype == OutputUpdate && !expanded_.cell(0).empty())
-                       expanded_.cell(0).updateMacros(cur, mc, utype);
+       if (macro_->expand(values, expanded_)) {
+               if (utype == OutputUpdate && !expanded_.empty())
+                       expanded_.updateMacros(cur, mc, utype);
        }
        // get definition for list edit mode
        docstring const & display = macro_->display();
@@ -482,19 +482,19 @@ void MathMacro::draw(PainterInfo & pi, int x, int y) const
 
                        pi.pain.fillRectangle(x, y - dim.asc, dim.wid, 1 + 
namedim.height() + 1, Color_mathmacrobg);
                        pi.pain.text(x + 1, y - dim.asc + namedim.asc + 2, 
name(), font);
-                       expx += (dim.wid - 
expanded_.cell(0).dimension(*pi.base.bv).width()) / 2;
+                       expx += (dim.wid - 
expanded_.dimension(*pi.base.bv).width()) / 2;
                }
 
                if (editing_[pi.base.bv]) {
                        pi.pain.enterMonochromeMode(Color_mathbg, 
Color_mathmacroblend);
-                       expanded_.cell(0).draw(pi, expx, expy);
+                       expanded_.draw(pi, expx, expy);
                        pi.pain.leaveMonochromeMode();
 
                        if (drawBox)
                                pi.pain.rectangle(x, y - dim.asc, dim.wid,
                                                  dim.height(), 
Color_mathmacroframe);
                } else
-                       expanded_.cell(0).draw(pi, expx, expy);
+                       expanded_.draw(pi, expx, expy);
 
                if (!drawBox)
                        drawMarkers(pi, x, y);
@@ -649,7 +649,7 @@ void MathMacro::detachArguments(vector<MathData> & args, 
bool strip)
        }
 
        attachedArgsNum_ = 0;
-       expanded_.cell(0) = MathData();
+       expanded_ = MathData();
        cells_.resize(0);
 
        needsUpdate_ = true;
@@ -662,7 +662,7 @@ void MathMacro::attachArguments(vector<MathData> const & 
args, size_t arity, int
        cells_ = args;
        attachedArgsNum_ = args.size();
        cells_.resize(arity);
-       expanded_.cell(0) = MathData();
+       expanded_ = MathData();
        optionals_ = optionals;
 
        needsUpdate_ = true;
@@ -796,19 +796,19 @@ void MathMacro::write(WriteStream & os) const
 
 void MathMacro::maple(MapleStream & os) const
 {
-       lyx::maple(expanded_.cell(0), os);
+       lyx::maple(expanded_, os);
 }
 
 
 void MathMacro::maxima(MaximaStream & os) const
 {
-       lyx::maxima(expanded_.cell(0), os);
+       lyx::maxima(expanded_, os);
 }
 
 
 void MathMacro::mathematica(MathematicaStream & os) const
 {
-       lyx::mathematica(expanded_.cell(0), os);
+       lyx::mathematica(expanded_, os);
 }
 
 
@@ -825,12 +825,11 @@ void MathMacro::mathmlize(MathStream & os) const
                        return;
                }
        }
-       MathData const & data = expanded_.cell(0);
-       if (data.empty()) {
+       if (expanded_.empty()) {
                // this means that we do not recognize the macro
                throw MathExportException();
        }
-       os << data;
+       os << expanded_;
 }
 
 
@@ -845,18 +844,17 @@ void MathMacro::htmlize(HtmlStream & os) const
                        return;
                }
        }
-       MathData const & data = expanded_.cell(0);
-       if (data.empty()) {
+       if (expanded_.empty()) {
                // this means that we do not recognize the macro
                throw MathExportException();
        }
-       os << data;
+       os << expanded_;
 }
 
 
 void MathMacro::octave(OctaveStream & os) const
 {
-       lyx::octave(expanded_.cell(0), os);
+       lyx::octave(expanded_, os);
 }
 
 
diff --git a/src/mathed/MathMacro.h b/src/mathed/MathMacro.h
index 1d4b0ae..e3fdde9 100644
--- a/src/mathed/MathMacro.h
+++ b/src/mathed/MathMacro.h
@@ -14,7 +14,6 @@
 #define MATH_MACRO_H
 
 #include "InsetMathNest.h"
-#include "InsetMathSqrt.h"
 #include "MacroTable.h"
 #include "MathData.h"
 
@@ -166,7 +165,7 @@ private:
        /// current display mode
        DisplayMode displayMode_;
        /// expanded macro with ArgumentProxies
-       InsetMathSqrt expanded_;
+       MathData expanded_;
        /// macro definition with #1,#2,.. insets
        MathData definition_;
        /// number of arguments that were really attached

Reply via email to