]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_decorationinset.C
Make Helge happy: no more crash on arrow up/down in math macro
[lyx.git] / src / mathed / math_decorationinset.C
index 3f24a73e056a93802059008a74262aa4b3d8498e..eddbbf7ce17b4654616df51d1a079ecd04692254 100644 (file)
 #include "math_mathmlstream.h"
 #include "math_streamstr.h"
 
+#include "LaTeXFeatures.h"
 #include "debug.h"
 
 #include "support/std_ostream.h"
 
-using std::auto_ptr;
-
 
 MathDecorationInset::MathDecorationInset(latexkeys const * key)
        : MathNestInset(1), key_(key)
 {
-       lyxerr << " creating deco " << key->name << std::endl;
+//     lyxerr << " creating deco " << key->name << std::endl;
 }
 
 
-auto_ptr<InsetBase> MathDecorationInset::clone() const
+std::auto_ptr<InsetBase> MathDecorationInset::doClone() const
 {
-       return auto_ptr<InsetBase>(new MathDecorationInset(*this));
+       return std::auto_ptr<InsetBase>(new MathDecorationInset(*this));
 }
 
 
@@ -90,6 +89,16 @@ bool MathDecorationInset::wide() const
 }
 
 
+bool MathDecorationInset::ams() const
+{
+       return
+                       key_->name == "overleftrightarrow" ||
+                       key_->name == "underleftarrow" ||
+                       key_->name == "underrightarrow" ||
+                       key_->name == "underleftrightarrow";
+}
+
+
 void MathDecorationInset::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        cell(0).metrics(mi, dim);
@@ -119,6 +128,7 @@ void MathDecorationInset::draw(PainterInfo & pi, int x, int y) const
                mathed_draw_deco(pi, x + 1 + (cell(0).width() - dw_) / 2,
                        y + dy_, dw_, dh_, key_->name);
        drawMarkers(pi, x, y);
+       setPosCache(pi, x, y);
 }
 
 
@@ -140,3 +150,11 @@ void MathDecorationInset::infoize(std::ostream & os) const
 {
        os << "Deco: " << key_->name;
 }
+
+
+void MathDecorationInset::validate(LaTeXFeatures & features) const
+{
+       if (ams())
+               features.require("amsmath");
+       MathNestInset::validate(features);
+}