]> git.lyx.org Git - features.git/commitdiff
disable leaving the inset during selection
authorAndré Pönitz <poenitz@gmx.net>
Fri, 12 Oct 2001 16:12:32 +0000 (16:12 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Fri, 12 Oct 2001 16:12:32 +0000 (16:12 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2877 a592a061-630c-0410-9148-cb99ea01b6c8

src/mathed/math_cursor.C
src/mathed/math_macro.C
src/mathed/math_macro.h

index ee057dedc291ef1887bc89bd36a956b1f7002ad2..9d5e20a53cd91efebb9af716848ff5cff22a5849 100644 (file)
@@ -279,9 +279,7 @@ bool MathCursor::posLeft()
 {
        if (pos() == 0)
                return false;
-
        --pos();
-
        return true;
 }
 
@@ -290,9 +288,7 @@ bool MathCursor::posRight()
 {
        if (pos() == size())
                return false;
-
        ++pos();
-
        return true;
 }
 
@@ -313,7 +309,7 @@ bool MathCursor::left(bool sel)
                return true;
        } 
        
-       return posLeft() || idxLeft() || popLeft();
+       return posLeft() || idxLeft() || popLeft() || selection_;
 }
 
 
@@ -333,7 +329,7 @@ bool MathCursor::right(bool sel)
                return true;
        }
 
-       return posRight() || idxRight() || popRight();
+       return posRight() || idxRight() || popRight() || selection_;
 }
 
 
@@ -591,7 +587,7 @@ bool MathCursor::up(bool sel)
                }
        }
 
-       return goUp();
+       return goUp() || selection_;
 }
 
 
@@ -624,7 +620,7 @@ bool MathCursor::down(bool sel)
                }
        }
 
-       return goDown();
+       return goDown() || selection_;
 }
 
 
index 7f6938b0263440b0bce68147a2966cb1bd53cf01..5db4fe185a279a6cac82905a07484012386b4a02 100644 (file)
@@ -23,8 +23,8 @@
 #include "support/lstrings.h"
 #include "support/LAssert.h"
 #include "debug.h"
-#include "mathed/support.h"
-#include "mathed/math_cursor.h"
+#include "support.h"
+#include "math_cursor.h"
 #include "math_macrotable.h"
 #include "math_macrotemplate.h"
 #include "Painter.h"
@@ -57,9 +57,28 @@ const char * MathMacro::name() const
 }
 
 
+bool MathMacro::defining() const
+{
+       return 0;
+       //return mathcursor && mathcursor->formula()->getInsetName() == name();
+}
+
+
+bool MathMacro::editing() const
+{
+       return mathcursor && mathcursor->isInside(this);
+}
+
+
 void MathMacro::metrics(MathStyles st) const
 {
-       if (mathcursor && mathcursor->isInside(this)) {
+       if (defining()) {
+               size_ = st;
+               mathed_string_dim(LM_TC_TEX, size_, name(), ascent_, descent_, width_);
+               return;
+       }
+
+       if (editing()) {
                expanded_ = tmplate_->xcell(0);
                expanded_.metrics(st);
                size_    = st;
@@ -81,15 +100,16 @@ void MathMacro::metrics(MathStyles st) const
                        descent_ += std::max(c.ascent(),  lasc) + 5;
                        descent_ += std::max(c.descent(), ldes) + 5;
                }
-       } else {
-               expanded_ = tmplate_->xcell(0);
-               expanded_.data_.substitute(*this);
-               expanded_.metrics(st);
-               size_    = st;
-               width_   = expanded_.width()   + 6;
-               ascent_  = expanded_.ascent()  + 3;
-               descent_ = expanded_.descent() + 3;
-       }
+               return;
+       } 
+
+       expanded_ = tmplate_->xcell(0);
+       expanded_.data_.substitute(*this);
+       expanded_.metrics(st);
+       size_    = st;
+       width_   = expanded_.width()   + 6;
+       ascent_  = expanded_.ascent()  + 3;
+       descent_ = expanded_.descent() + 3;
 }
 
 
@@ -100,10 +120,12 @@ void MathMacro::draw(Painter & pain, int x, int y) const
 
        metrics(size());
 
-       //LColor::color col;
-
-       if (mathcursor && mathcursor->isInside(this)) {
+       if (defining()) {
+               drawStr(pain, LM_TC_TEX, size_, x, y, name());
+               return;
+       }
 
+       if (editing()) {
                int h = y - ascent() + 2 + expanded_.ascent();
                drawStr(pain, LM_TC_TEXTRM, size(), x + 3, h, name());
 
@@ -125,14 +147,10 @@ void MathMacro::draw(Painter & pain, int x, int y) const
                        drawStr(pain, LM_TC_TEX, size(), x + 3, h, str);
                        h += std::max(c.descent(), ldes) + 5;
                }
-               //col = LColor::red;
-       } else {
-               expanded_.draw(pain, x + 3, y);
-               //col = LColor::black;
+               return;
        }
 
-       //if (nargs() > 0)
-       //      pain.rectangle(x + 1, y - ascent() + 1, width() - 2, height() - 2, col);
+       expanded_.draw(pain, x + 3, y);
 }
 
 
index 8cf2107f560eea439fac80e47d6dbd86d15e4962..05362ee2a0d4c9f3dba45159b08cca99cacefdc3 100644 (file)
@@ -73,6 +73,10 @@ private:
        void operator=(MathMacro const &);
        ///
        char const * name() const;
+       ///
+       bool editing() const;
+       ///
+       bool defining() const;
 
        ///
        MathAtom & tmplate_;