]> git.lyx.org Git - features.git/commitdiff
InsetMath: match the screen display with the EnsureMath behaviour in output
authorGuillaume Munch <gm@lyx.org>
Tue, 22 Nov 2016 10:26:15 +0000 (11:26 +0100)
committerGuillaume Munch <gm@lyx.org>
Tue, 22 Nov 2016 10:30:26 +0000 (11:30 +0100)
30 files changed:
src/MetricsInfo.cpp
src/MetricsInfo.h
src/mathed/InsetMathAMSArray.cpp
src/mathed/InsetMathArray.cpp
src/mathed/InsetMathBig.cpp
src/mathed/InsetMathBoldSymbol.cpp
src/mathed/InsetMathCancel.cpp
src/mathed/InsetMathCancelto.cpp
src/mathed/InsetMathCases.cpp
src/mathed/InsetMathDecoration.cpp
src/mathed/InsetMathDelim.cpp
src/mathed/InsetMathDiagram.cpp
src/mathed/InsetMathEnsureMath.cpp
src/mathed/InsetMathEnv.cpp
src/mathed/InsetMathFrac.cpp
src/mathed/InsetMathOverset.cpp
src/mathed/InsetMathPhantom.cpp
src/mathed/InsetMathRoot.cpp
src/mathed/InsetMathScript.cpp
src/mathed/InsetMathSideset.cpp
src/mathed/InsetMathSize.cpp
src/mathed/InsetMathSpace.cpp
src/mathed/InsetMathSplit.cpp
src/mathed/InsetMathSplit.h
src/mathed/InsetMathSqrt.cpp
src/mathed/InsetMathStackrel.cpp
src/mathed/InsetMathSubstack.cpp
src/mathed/InsetMathUnderset.cpp
src/mathed/InsetMathXArrow.cpp
src/mathed/InsetMathXYMatrix.cpp

index 3f2b13bc6da5c82dac223779d9372042a539f462..ef9803d8315576ff8dca0b1c84eda0a5cf8bca7e 100644 (file)
@@ -77,6 +77,15 @@ Changer MetricsBase::changeFontSet(string const & name)
 }
 
 
+Changer MetricsBase::changeEnsureMath()
+{
+       // FIXME:
+       //   \textit{\ensuremath{\text{a}}}
+       // should appear in italics
+       return isTextFont(fontname) ? changeFontSet("mathnormal") : Changer();
+}
+
+
 /////////////////////////////////////////////////////////////////////////
 //
 // MetricsInfo
index b350747b4bd1a684a2c3479f1d3b86553f7c5b50..1dbeae249a49725f05576b8533c9e12f744aad94 100644 (file)
@@ -54,6 +54,8 @@ public:
 
        /// Temporarily change a full font.
        Changer changeFontSet(std::string const & font);
+       /// Temporarily change the font to math if needed.
+       Changer changeEnsureMath();
        // Temporarily change to the style suitable for use in fractions
        Changer changeFrac();
        // Temporarily change to the style suitable for use in arrays
index 24a1fef7de5943fbb7303346b6c0a1a5cfb066a3..9a9a3495bc7434392afc1e41aa5e6d2c5519106c 100644 (file)
@@ -85,6 +85,7 @@ char const * InsetMathAMSArray::name_right() const
 
 void InsetMathAMSArray::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Changer dummy = mi.base.changeArray();
        InsetMathGrid::metrics(mi, dim);
 }
@@ -92,6 +93,7 @@ void InsetMathAMSArray::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathAMSArray::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        Dimension const dim = dimension(*pi.base.bv);
        int const yy = y - dim.ascent();
        // Drawing the deco after changeStyle does not work
index ad476ae17f46e23c1dcbcccbb949897c2d3b4f16..eb8676d1647cbf57365ec84b60c1388b2dc3468b 100644 (file)
@@ -74,6 +74,7 @@ Inset * InsetMathArray::clone() const
 
 void InsetMathArray::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Changer dummy = mi.base.changeArray();
        InsetMathGrid::metrics(mi, dim);
 }
@@ -82,6 +83,7 @@ void InsetMathArray::metrics(MetricsInfo & mi, Dimension & dim) const
 void InsetMathArray::draw(PainterInfo & pi, int x, int y) const
 {
        setPosCache(pi, x, y);
+       Changer dummy2 = pi.base.changeEnsureMath();
        Changer dummy = pi.base.changeArray();
        InsetMathGrid::draw(pi, x, y);
 }
index 9c2f3bff5b3f88ab7471bb1fde661fba115d248d..ff3765aed298e4953a9cb60623ea97504c86c624 100644 (file)
@@ -69,6 +69,7 @@ double InsetMathBig::increase() const
 
 void InsetMathBig::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        double const h = theFontMetrics(mi.base.font).ascent('I');
        double const f = increase();
        dim.wid = 6;
@@ -79,6 +80,7 @@ void InsetMathBig::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathBig::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        Dimension const dim = dimension(*pi.base.bv);
        // mathed_draw_deco does not use the leading backslash, so remove it
        // (but don't use ltrim if this is the backslash delimiter).
index ade29f7de157f63944c4dd0b8e4335c74719e404..d8205198843e821056080a0670a12f0097bf8038 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "MathStream.h"
 #include "MathData.h"
+#include "MetricsInfo.h"
 #include "LaTeXFeatures.h"
 
 #include <ostream>
@@ -49,6 +50,7 @@ docstring InsetMathBoldSymbol::name() const
 
 void InsetMathBoldSymbol::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        //Changer dummy = mi.base.changeFontSet("mathbf");
        cell(0).metrics(mi, dim);
        metricsMarkers(mi, dim);
@@ -58,6 +60,7 @@ void InsetMathBoldSymbol::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathBoldSymbol::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        //Changer dummy = pi.base.changeFontSet("mathbf");
        cell(0).draw(pi, x + 1, y);
        cell(0).draw(pi, x + 2, y);
index 0a8aad90fa65832dfb0ab2b03a19aeced794e179..0e91575d8df2d3f58f38a8d1e82a0a38f8d5488b 100644 (file)
@@ -37,6 +37,7 @@ Inset * InsetMathCancel::clone() const
 
 void InsetMathCancel::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        cell(0).metrics(mi, dim);
        metricsMarkers(mi, dim);
 }
@@ -44,6 +45,7 @@ void InsetMathCancel::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathCancel::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        // We first draw the text and then an arrow
        ColorCode const origcol = pi.base.font.color();
        cell(0).draw(pi, x + 1, y);
index 6170cbd6fa0c0172a66f1f72140f893b7578f33a..283a97157d7d9c66033523fae6778d8032d7e026 100644 (file)
@@ -41,6 +41,7 @@ Inset * InsetMathCancelto::clone() const
 
 void InsetMathCancelto::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        InsetMathNest::metrics(mi);
        Dimension const & dim0 = cell(0).dimension(*mi.base.bv);
        Dimension const & dim1 = cell(1).dimension(*mi.base.bv);
@@ -53,6 +54,7 @@ void InsetMathCancelto::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathCancelto::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        ColorCode const origcol = pi.base.font.color();
 
        // We first draw the text and then an arrow
index f510278708b86a7f896f65f135d11eecfe0cb9c9..4a7b1512441a342867d815bf187ec9a86df2cef8 100644 (file)
@@ -45,12 +45,14 @@ Inset * InsetMathCases::clone() const
 
 void InsetMathCases::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        InsetMathGrid::metrics(mi, dim);
 }
 
 
 void InsetMathCases::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        Dimension const dim = dimension(*pi.base.bv);
        mathed_draw_deco(pi, x + 1, y - dim.ascent(), 6, dim.height(), from_ascii("{"));
        InsetMathGrid::draw(pi, x, y);
index e152efe6b1f757f79ede087c165c0bfe8209e270..7a0cfb09c18e616750bc9603fb13fa686f76f24c 100644 (file)
@@ -105,9 +105,9 @@ InsetMath::mode_type InsetMathDecoration::currentMode() const
 
 void InsetMathDecoration::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       bool really_change_font = currentMode() == TEXT_MODE
-                               && isMathFont(mi.base.fontname);
-       Changer dummy = really_change_font ? mi.base.changeFontSet("textnormal")
+       Changer dummy =
+               (currentMode() == MATH_MODE) ? mi.base.changeEnsureMath() :
+               (isMathFont(mi.base.fontname)) ? mi.base.changeFontSet("textnormal")
                : Changer();
 
        cell(0).metrics(mi, dim);
@@ -129,9 +129,9 @@ void InsetMathDecoration::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathDecoration::draw(PainterInfo & pi, int x, int y) const
 {
-       bool really_change_font = currentMode() == TEXT_MODE
-                                     && isMathFont(pi.base.fontname);
-       Changer dummy = really_change_font ? pi.base.changeFontSet("textnormal")
+       Changer dummy =
+               (currentMode() == MATH_MODE) ? pi.base.changeEnsureMath() :
+               (isMathFont(pi.base.fontname)) ? pi.base.changeFontSet("textnormal")
                : Changer();
 
        cell(0).draw(pi, x + 1, y);
index 4ab179e7b29ec97eb6bb751b5baa31a8af8288db..d2b284f1907aaddd525514c9d2459094cd9fbd84 100644 (file)
@@ -104,6 +104,7 @@ void InsetMathDelim::normalize(NormalStream & os) const
 
 void InsetMathDelim::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        Dimension dim0;
        cell(0).metrics(mi, dim0);
        Dimension t = theFontMetrics(mi.base.font).dimension('I');
@@ -123,6 +124,7 @@ void InsetMathDelim::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathDelim::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        Dimension const dim = dimension(*pi.base.bv);
        int const b = y - dim.asc;
        cell(0).draw(pi, x + dw_, y);
index 9031b40d5e72c9a35c26e70a87756e2a5a0bc4ad..6b12949b9ee9dbf0001f0506781bcf40aecbfdf4 100644 (file)
@@ -48,6 +48,7 @@ int InsetMathDiagram::rowsep() const
 
 void InsetMathDiagram::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        FontInfo & f = mi.base.font;
        Changer dummy = (f.style() == LM_ST_DISPLAY) ? f.changeStyle(LM_ST_TEXT)
                : Changer();
@@ -58,6 +59,7 @@ void InsetMathDiagram::metrics(MetricsInfo & mi, Dimension & dim) const
 void InsetMathDiagram::draw(PainterInfo & pi, int x, int y) const
 {
        setPosCache(pi, x, y);
+       Changer dummy2 = pi.base.changeEnsureMath();
        FontInfo & f = pi.base.font;
        Changer dummy = (f.style() == LM_ST_DISPLAY) ? f.changeStyle(LM_ST_TEXT)
                : Changer();
index d73a1cb35991e49e8c553d95ccaba20f1f1ad27e..1897781aa6707a64c4152e49323b1e0c26f089ea 100644 (file)
@@ -38,9 +38,7 @@ Inset * InsetMathEnsureMath::clone() const
 
 void InsetMathEnsureMath::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       bool really_change_font = isTextFont(mi.base.fontname);
-       Changer dummy = really_change_font ? mi.base.changeFontSet("mathnormal")
-               : Changer();
+       Changer dummy = mi.base.changeEnsureMath();
        cell(0).metrics(mi, dim);
        metricsMarkers(mi, dim);
 }
@@ -48,9 +46,7 @@ void InsetMathEnsureMath::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathEnsureMath::draw(PainterInfo & pi, int x, int y) const
 {
-       bool really_change_font = isTextFont(pi.base.fontname);
-       Changer dummy = really_change_font ? pi.base.changeFontSet("mathnormal")
-               : Changer();
+       Changer dummy = pi.base.changeEnsureMath();
        cell(0).draw(pi, x, y);
        drawMarkers(pi, x, y);
 }
index 7582201e614201e8b9186cfb523a842859758f5f..41263562cde8d37a90a5d99f9bddd7f6152a4861 100644 (file)
@@ -16,6 +16,8 @@
 #include "MathStream.h"
 #include "MathStream.h"
 
+#include "MetricsInfo.h"
+
 #include "support/gettext.h"
 #include "support/lstrings.h"
 
@@ -38,6 +40,7 @@ Inset * InsetMathEnv::clone() const
 
 void InsetMathEnv::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        cell(0).metrics(mi, dim);
        metricsMarkers(mi, dim);
 }
@@ -45,6 +48,7 @@ void InsetMathEnv::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathEnv::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        cell(0).draw(pi, x + 1, y);
        drawMarkers(pi, x, y);
 }
index 4c7c462fde54e6a5daf1f8fa74cd474d137f71ae..2362495d771da3f00ece272b62b25adb6b2431b3 100644 (file)
@@ -186,6 +186,7 @@ latexkeys const * slash_symbol()
 void InsetMathFrac::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        Dimension dim0, dim1, dim2;
+       Changer dummy3 = mi.base.changeEnsureMath();
 
        switch (kind_) {
        case UNIT: {
@@ -259,6 +260,7 @@ void InsetMathFrac::metrics(MetricsInfo & mi, Dimension & dim) const
                         || kind_ == DFRAC) ? mi.base.font.changeStyle(LM_ST_DISPLAY) :
                        // all others
                                              mi.base.changeFrac();
+               Changer dummy2 = mi.base.changeEnsureMath();
                cell(0).metrics(mi, dim0);
                cell(1).metrics(mi, dim1);
                dim.wid = max(dim0.wid, dim1.wid) + 2;
@@ -274,6 +276,7 @@ void InsetMathFrac::metrics(MetricsInfo & mi, Dimension & dim) const
 void InsetMathFrac::draw(PainterInfo & pi, int x, int y) const
 {
        setPosCache(pi, x, y);
+       Changer dummy3 = pi.base.changeEnsureMath();
        Dimension const dim = dimension(*pi.base.bv);
        Dimension const dim0 = cell(0).dimension(*pi.base.bv);
        switch (kind_) {
@@ -654,6 +657,7 @@ int InsetMathBinom::dw(int height) const
 
 void InsetMathBinom::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Dimension dim0, dim1;
        int const dy = dy_for_frac(mi.base);
        Changer dummy =
@@ -671,6 +675,7 @@ void InsetMathBinom::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathBinom::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        Dimension const dim = dimension(*pi.base.bv);
        Dimension const & dim0 = cell(0).dimension(*pi.base.bv);
        Dimension const & dim1 = cell(1).dimension(*pi.base.bv);
index b791c2482f99ceb232220ecb040ecc379528096b..b903662d944cb156b40740aab379ec230533c40c 100644 (file)
@@ -31,6 +31,7 @@ Inset * InsetMathOverset::clone() const
 
 void InsetMathOverset::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Dimension dim1;
        cell(1).metrics(mi, dim1);
        Changer dummy = mi.base.changeFrac();
@@ -45,6 +46,7 @@ void InsetMathOverset::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathOverset::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        Dimension const dim = dimension(*pi.base.bv);
        Dimension const & dim0 = cell(0).dimension(*pi.base.bv);
        Dimension const & dim1 = cell(1).dimension(*pi.base.bv);
index 6d0b88df78bee5ea1582631e8095bf04b65cecfb..1ae8eee07b65b2632a9d42526344717cbdfae704 100644 (file)
@@ -38,6 +38,7 @@ Inset * InsetMathPhantom::clone() const
 
 void InsetMathPhantom::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        cell(0).metrics(mi, dim);
        metricsMarkers(mi, dim);
 }
@@ -45,6 +46,7 @@ void InsetMathPhantom::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathPhantom::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        static int const arrow_size = 4;
 
        // We first draw the text and then an arrow
index aa0a81bce1fea00c3b4343c0380df76ebba745fe..8c4d1fa5ac784b94403c964b20bb729ee0014d74 100644 (file)
@@ -41,6 +41,7 @@ Inset * InsetMathRoot::clone() const
 
 void InsetMathRoot::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        InsetMathNest::metrics(mi);
        Dimension const & dim0 = cell(0).dimension(*mi.base.bv);
        Dimension const & dim1 = cell(1).dimension(*mi.base.bv);
@@ -53,6 +54,7 @@ void InsetMathRoot::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathRoot::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        Dimension const & dim0 = cell(0).dimension(*pi.base.bv);
        int const w = dim0.width();
        // the "exponent"
index 7363c885545aebd68a0271fe462265ac17e3e395..22a226d6ad9823446fe42dadb5afe2e2a1dec50c 100644 (file)
@@ -288,6 +288,7 @@ MathClass InsetMathScript::mathClass() const
 
 void InsetMathScript::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Dimension dim0;
        Dimension dim1;
        Dimension dim2;
@@ -339,6 +340,7 @@ void InsetMathScript::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathScript::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        BufferView & bv = *pi.base.bv;
        if (!nuc().empty())
                nuc().draw(pi, x + dxx(bv), y);
index b04eca7730548a93dd04543b92bebef92b289b92..02ac4badd679b57b164924822eb600a6fbfb450b 100644 (file)
@@ -185,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;
@@ -227,6 +228,7 @@ void InsetMathSideset::metrics(MetricsInfo & mi, Dimension & dim) const
 
 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_)
index ef48d0b52542718bd601764d3d00e2617f3094ac..534010b688d287d4d5326dde6f16736e0a8bb14a 100644 (file)
@@ -44,6 +44,7 @@ Inset * InsetMathSize::clone() const
 
 void InsetMathSize::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Changer dummy = mi.base.font.changeStyle(style_);
        cell(0).metrics(mi, dim);
        metricsMarkers(mi, dim);
@@ -52,6 +53,7 @@ void InsetMathSize::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathSize::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        Changer dummy = pi.base.font.changeStyle(style_);
        cell(0).draw(pi, x + 1, y);
        drawMarkers(pi, x, y);
index 4cf1b944f878d166e0cf7ac4ef95560289e01169..39f3147bf1b3603864260e802beced96fcc2f29d 100644 (file)
@@ -121,6 +121,7 @@ Inset * InsetMathSpace::clone() const
 
 void InsetMathSpace::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        dim.asc = 4;
        dim.des = 0;
        if (space_info[space_].custom)
@@ -132,6 +133,7 @@ void InsetMathSpace::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathSpace::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        // Sadly, HP-UX CC can't handle that kind of initialization.
        // XPoint p[4] = {{++x, y-3}, {x, y}, {x+width-2, y}, {x+width-2, y-3}};
        if (!space_info[space_].visible)
index fb2ecbe083148047a843f849c4945571eab2d5ae..5008a8d336b1aefade7eb0a82faeb7e258b2915e 100644 (file)
@@ -20,6 +20,7 @@
 #include "FuncStatus.h"
 #include "support/gettext.h"
 #include "LaTeXFeatures.h"
+#include "MetricsInfo.h"
 
 #include "support/lstrings.h"
 
@@ -93,8 +94,17 @@ int InsetMathSplit::displayColSpace(col_type col) const
 
 
 
+void InsetMathSplit::metrics(MetricsInfo & mi, Dimension & dim) const
+{
+       Changer dummy = mi.base.changeEnsureMath();
+       InsetMathGrid::metrics(mi, dim);
+}
+
+
+
 void InsetMathSplit::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        InsetMathGrid::draw(pi, x, y);
        setPosCache(pi, x, y);
 }
index 122653459fd5134049a5c6f3c61441c9a3228e61..8893e7fe1d9e638515a0532d40269e00303dc564 100644 (file)
@@ -24,6 +24,8 @@ public:
        explicit InsetMathSplit(Buffer * buf, docstring const & name,
                char valign = 'c', bool numbered = false);
        ///
+       void metrics(MetricsInfo & mi, Dimension & dim) const;
+       ///
        void draw(PainterInfo & pi, int x, int y) const;
        ///
        bool getStatus(Cursor & cur, FuncRequest const & cmd,
index 3e49abccb2c6bb07087e87768b6f6d9a6ba85292..1f58dce4dbf979f595412bcc9a080f81a3a74260 100644 (file)
@@ -37,6 +37,7 @@ Inset * InsetMathSqrt::clone() const
 
 void InsetMathSqrt::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        cell(0).metrics(mi, dim);
        dim.asc += 4;
        dim.des += 2;
@@ -47,6 +48,7 @@ void InsetMathSqrt::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathSqrt::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        cell(0).draw(pi, x + 10, y);
        Dimension const dim = dimension(*pi.base.bv);
        int const a = dim.ascent();
index e34448a419af53eb831076f7d4af090363687c11..4efcfe4443d5bee9538f6f8f9e79beb5e7556a78 100644 (file)
@@ -61,6 +61,7 @@ MathClass InsetMathStackrel::mathClass() const
 
 void InsetMathStackrel::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Dimension dim1;
        cell(1).metrics(mi, dim1);
        Changer dummy = mi.base.changeFrac();
@@ -83,6 +84,7 @@ void InsetMathStackrel::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathStackrel::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        Dimension const dim = dimension(*pi.base.bv);
        Dimension const & dim0 = cell(0).dimension(*pi.base.bv);
        Dimension const & dim1 = cell(1).dimension(*pi.base.bv);
index 4bcc7c539c8c2f46006b41b8307631a5742c42a0..fb29077067d087d5467bb53c69651abd43379361 100644 (file)
@@ -45,6 +45,7 @@ Inset * InsetMathSubstack::clone() const
 
 void InsetMathSubstack::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Changer dummy = mi.base.changeArray();
        InsetMathGrid::metrics(mi, dim);
 }
@@ -52,6 +53,7 @@ void InsetMathSubstack::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathSubstack::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        Changer dummy = pi.base.changeArray();
        InsetMathGrid::draw(pi, x + 1, y);
 }
index 2027cf2337e8af8da217bfd139b918ac1303222c..f31ebae75c8204e12c61dadee7b4b42360a19c7d 100644 (file)
@@ -32,6 +32,7 @@ Inset * InsetMathUnderset::clone() const
 
 void InsetMathUnderset::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Dimension dim1;
        cell(1).metrics(mi, dim1);
        Changer dummy = mi.base.changeFrac();
@@ -46,6 +47,7 @@ void InsetMathUnderset::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathUnderset::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        Dimension const dim = dimension(*pi.base.bv);
        Dimension const & dim0 = cell(0).dimension(*pi.base.bv);
        Dimension const & dim1 = cell(1).dimension(*pi.base.bv);
index a4c1c12c750c5402778aaf5f2278b1c417c597d4..d2121d6dfef331cc1ed577e12ffedbab6b16201f 100644 (file)
@@ -43,6 +43,7 @@ Inset * InsetMathXArrow::clone() const
 
 void InsetMathXArrow::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Changer dummy = mi.base.changeScript();
        Dimension dim0;
        cell(0).metrics(mi, dim0);
@@ -57,6 +58,7 @@ void InsetMathXArrow::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathXArrow::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy2 = pi.base.changeEnsureMath();
        Changer dummy = pi.base.changeScript();
        Dimension const dim = dimension(*pi.base.bv);
        Dimension const & dim0 = cell(0).dimension(*pi.base.bv);
index 5e3bdb5057e6333ed7a43774b285f580eee5712f..ab5cb834a318d02cb76470b4dd3461e44aee27b6 100644 (file)
@@ -49,6 +49,7 @@ int InsetMathXYMatrix::rowsep() const
 
 void InsetMathXYMatrix::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy2 = mi.base.changeEnsureMath();
        Changer dummy = mi.base.changeArray();
        InsetMathGrid::metrics(mi, dim);
 }
@@ -57,6 +58,7 @@ void InsetMathXYMatrix::metrics(MetricsInfo & mi, Dimension & dim) const
 void InsetMathXYMatrix::draw(PainterInfo & pi, int x, int y) const
 {
        setPosCache(pi, x, y);
+       Changer dummy2 = pi.base.changeEnsureMath();
        Changer dummy = pi.base.changeArray();
        InsetMathGrid::draw(pi, x, y);
 }