]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_macro.C
fix #1073
[lyx.git] / src / mathed / math_macro.C
index 148295b2985202f2874ff53a1cc903e63898a605..17c05dcbea93d90d9f010b42246412ee242949be 100644 (file)
@@ -14,9 +14,6 @@
  *  This code is under the GNU General Public Licence version 2 or later.
  */
 
-#ifdef __GNUG__
-#pragma implementation
-#endif
 
 #include "math_macro.h"
 #include "math_support.h"
@@ -53,7 +50,7 @@ MathInset * MathMacro::clone() const
 }
 
 
-string const & MathMacro::name() const
+string MathMacro::name() const
 {
        return tmplate_->asMacroTemplate()->name();
 }
@@ -68,11 +65,11 @@ bool MathMacro::defining() const
 
 void MathMacro::expand() const
 {
-       expanded_ = tmplate_->xcell(tmplate_->cell(1).empty() ? 0 : 1);
+       expanded_ = tmplate_->cell(tmplate_->cell(1).empty() ? 0 : 1);
 }
 
 
-void MathMacro::metrics(MathMetricsInfo & mi) const
+void MathMacro::metrics(MetricsInfo & mi) const
 {
        augmentFont(font_, "lyxtex");
        mi_ = mi;
@@ -85,7 +82,7 @@ void MathMacro::metrics(MathMetricsInfo & mi) const
        if (editing()) {
                expand();
                dim_ = expanded_.metrics(mi_);
-               metricsMarkers2(2); 
+               metricsMarkers2(2);
 
                dim_.w +=  mathed_string_width(font_, name()) + 10;
 
@@ -93,7 +90,7 @@ void MathMacro::metrics(MathMetricsInfo & mi) const
                mathed_string_dim(font_, "#1: ", ldim);
 
                for (idx_type i = 0; i < nargs(); ++i) {
-                       MathXArray const & c = xcell(i);
+                       MathArray const & c = cell(i);
                        c.metrics(mi_);
                        dim_.w  = max(dim_.w, c.width() + ldim.w);
                        dim_.d += max(c.ascent(),  ldim.a) + 5;
@@ -103,13 +100,13 @@ void MathMacro::metrics(MathMetricsInfo & mi) const
        }
 
        expand();
-       expanded_.data().substitute(*this);
+       expanded_.substitute(*this);
        expanded_.metrics(mi_);
        dim_ = expanded_.dim();
 }
 
 
-void MathMacro::draw(MathPainterInfo & pi, int x, int y) const
+void MathMacro::draw(PainterInfo & pi, int x, int y) const
 {
        metrics(mi_);
 
@@ -133,7 +130,7 @@ void MathMacro::draw(MathPainterInfo & pi, int x, int y) const
                mathed_string_dim(font_, "#1: ", ldim);
 
                for (idx_type i = 0; i < nargs(); ++i) {
-                       MathXArray const & c = xcell(i);
+                       MathArray const & c = cell(i);
                        h += max(c.ascent(), ldim.a) + 5;
                        c.draw(pi, x + ldim.w, h);
                        char str[] = "#1:";
@@ -160,11 +157,20 @@ void MathMacro::dump() const
 }
 
 
-bool MathMacro::idxUpDown(idx_type & idx, bool up) const
+bool MathMacro::idxUpDown(idx_type & idx, pos_type &, bool up, int x) const
 {
        pos_type pos;
-       return
-               up ? MathNestInset::idxLeft(idx, pos) : MathNestInset::idxRight(idx, pos);
+       if (up) {
+               if (!MathNestInset::idxLeft(idx, pos))
+                       return false;
+               pos = cell(idx).x2pos(x);
+               return true;
+       } else {
+               if (!MathNestInset::idxRight(idx, pos))
+                       return false;
+               pos = cell(idx).x2pos(x);
+               return true;
+       }
 }
 
 
@@ -188,48 +194,41 @@ void MathMacro::validate(LaTeXFeatures & features) const
 }
 
 
-void MathMacro::maplize(MapleStream & os) const
+void MathMacro::maple(MapleStream & os) const
 {
        updateExpansion();
-       ::maplize(expanded_.data(), os);
+       ::maple(expanded_, os);
 }
 
 
 void MathMacro::mathmlize(MathMLStream & os) const
 {
        updateExpansion();
-       ::mathmlize(expanded_.data(), os);
+       ::mathmlize(expanded_, os);
 }
 
 
-void MathMacro::octavize(OctaveStream & os) const
+void MathMacro::octave(OctaveStream & os) const
 {
        updateExpansion();
-       ::octavize(expanded_.data(), os);
+       ::octave(expanded_, os);
 }
 
 
-void MathMacro::normalize(NormalStream & os) const
+void MathMacro::updateExpansion() const
 {
-       os << "[macro " << name() << " ";
-       for (idx_type i = 0; i < nargs(); ++i)
-               os << cell(i) << ' ';
-       os << ']';
+       expand();
+       expanded_.substitute(*this);
 }
 
 
-void MathMacro::write(WriteStream & os) const
+void MathMacro::infoize(std::ostream & os) const
 {
-       os << '\\' << name();
-       for (idx_type i = 0; i < nargs(); ++i)
-               os << '{' << cell(i) << '}';
-       if (nargs() == 0)
-               os << ' ';
+       os << "Macro: " << name();
 }
 
 
-void MathMacro::updateExpansion() const
+void MathMacro::infoize2(std::ostream & os) const
 {
-       expand();
-       expanded_.data().substitute(*this);
+       os << "Macro: " << name();
 }