]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathSideset.cpp
Make sure inset buffer is correctly set in math grid
[lyx.git] / src / mathed / InsetMathSideset.cpp
index 9bcbf1f09e217cda066992cf5e082bee3abd58c4..cdc5637282e0d817d49530defbdb5bb87b0e7dbb 100644 (file)
 
 #include <config.h>
 
+#include "InsetMathSideset.h"
+
+#include "InsetMathSymbol.h"
+#include "MathData.h"
+#include "MathStream.h"
+#include "MathSupport.h"
+
 #include "BufferView.h"
 #include "Cursor.h"
 #include "DispatchResult.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
-#include "InsetMathSideset.h"
-#include "InsetMathSymbol.h"
 #include "LaTeXFeatures.h"
-#include "MathData.h"
-#include "MathStream.h"
-#include "MathSupport.h"
+#include "MetricsInfo.h"
 
 #include "support/debug.h"
-
 #include "support/lassert.h"
 
 
@@ -34,7 +36,7 @@ using namespace std;
 namespace {
        /// x spacing between the nucleus and the scripts
        int const dx = 2;
-}
+} // namespace
 
 
 namespace lyx {
@@ -127,15 +129,8 @@ int InsetMathSideset::dybt(BufferView const & bv, int asc, int des, bool top) co
 int InsetMathSideset::dyb(BufferView const & bv) const
 {
        int nd = ndes(bv);
-       int des = 0;
-       if (scriptl_ && scriptr_)
-               des = max(bl().dimension(bv).ascent(), br().dimension(bv).ascent());
-       else if (scriptl_)
-               des = bl().dimension(bv).ascent();
-       else if (scriptr_)
-               des = br().dimension(bv).ascent();
        int na = nasc(bv);
-       des = dybt(bv, na, nd, false);
+       int des = dybt(bv, na, nd, false);
        return des;
 }
 
@@ -143,15 +138,8 @@ int InsetMathSideset::dyb(BufferView const & bv) const
 int InsetMathSideset::dyt(BufferView const & bv) const
 {
        int na = nasc(bv);
-       int asc = 0;
-       if (scriptl_ && scriptr_)
-               asc = max(tl().dimension(bv).descent(), tr().dimension(bv).descent());
-       else if (scriptl_)
-               asc = tl().dimension(bv).descent();
-       else if (scriptr_)
-               asc = tr().dimension(bv).descent();
        int nd = ndes(bv);
-       asc = dybt(bv, na, nd, true);
+       int asc = dybt(bv, na, nd, true);
        return asc;
 }
 
@@ -197,6 +185,7 @@ int InsetMathSideset::nker(BufferView const * bv) const
 
 void InsetMathSideset::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Dimension dimn;
        Dimension dimbl;
        Dimension dimtl;
@@ -211,7 +200,7 @@ void InsetMathSideset::metrics(MetricsInfo & mi, Dimension & dim) const
                br().metrics(mi, dimbr);
                dimtr = dimbr;
        }
-       ScriptChanger dummy(mi.base);
+       Changer dummy = mi.base.changeScript();
        if (scriptl_) {
                bl().metrics(mi, dimbl);
                tl().metrics(mi, dimtl);
@@ -233,19 +222,19 @@ void InsetMathSideset::metrics(MetricsInfo & mi, Dimension & dim) const
        int nd = ndes(bv);
        int des = dyb(bv) + max(dimbl.descent(), dimbr.descent());
        dim.des = max(nd, des);
-       metricsMarkers(dim);
 }
 
 
 void InsetMathSideset::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        BufferView & bv = *pi.base.bv;
        nuc().draw(pi, x + dxn(bv), y);
        if (!scriptl_)
                bl().draw(pi, x          , y);
        if (!scriptr_)
                br().draw(pi, x + dxr(bv), y);
-       ScriptChanger dummy(pi.base);
+       Changer dummy = pi.base.changeScript();
        if (scriptl_) {
                bl().draw(pi, x          , y + dyb(bv));
                tl().draw(pi, x          , y - dyt(bv));
@@ -254,7 +243,6 @@ void InsetMathSideset::draw(PainterInfo & pi, int x, int y) const
                br().draw(pi, x + dxr(bv), y + dyb(bv));
                tr().draw(pi, x + dxr(bv), y - dyt(bv));
        }
-       drawMarkers(pi, x, y);
 }