Could you check whether the attached patch makes a difference?
Andre' -- Those who desire to give up Freedom in order to gain Security, will not have, nor do they deserve, either one. (T. Jefferson)
Index: formulabase.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/mathed/formulabase.C,v retrieving revision 1.146 diff -u -p -r1.146 formulabase.C --- formulabase.C 15 Apr 2002 08:50:20 -0000 1.146 +++ formulabase.C 15 Apr 2002 12:31:03 -0000 @@ -152,15 +152,16 @@ string const InsetFormulaBase::editMessa } -void InsetFormulaBase::edit(BufferView * bv, int x, int /*y*/, unsigned int) +void InsetFormulaBase::edit(BufferView * bv, int x, int y, unsigned int) { - //lyxerr << "edit: " << x << " " << y << " button: " << button << "\n"; if (!bv->lockInset(this)) lyxerr[Debug::MATHED] << "Cannot lock inset!!!" << endl; - - if (!mathcursor) - mathcursor = new MathCursor(this, x == 0); + delete mathcursor; + mathcursor = new MathCursor(this, true); metrics(bv); + mathcursor->setPos(x, y); + //lyxerr << "setting pos to " << x << "," << y << "\n"; + // if that is removed, we won't get the magenta box when entering an // inset for the first time bv->updateInset(this, false); @@ -169,8 +170,12 @@ void InsetFormulaBase::edit(BufferView * void InsetFormulaBase::edit(BufferView * bv, bool front) { - // looks hackish but seems to work - edit(bv, front ? 0 : 1, 0, 0); + if (!bv->lockInset(this)) + lyxerr[Debug::MATHED] << "Cannot lock inset!!!" << endl; + delete mathcursor; + mathcursor = new MathCursor(this, front); + metrics(bv); + bv->updateInset(this, false); } @@ -191,8 +196,8 @@ void InsetFormulaBase::insetUnlock(Buffe void InsetFormulaBase::getCursorPos(BufferView *, int & x, int & y) const { mathcursor->getPos(x, y); - x += xo_; - y += yo_; + //x -= xo_; + y -= yo_; //lyxerr << "getCursorPos: " << x << " " << y << "\n"; } @@ -298,10 +303,9 @@ void InsetFormulaBase::insetButtonPress( default: case 1: // left click - if (!mathcursor) { - mathcursor = new MathCursor(this, x == 0); - metrics(bv); - } + delete mathcursor; + mathcursor = new MathCursor(this, x == 0); + metrics(bv); first_x = x; first_y = y; mathcursor->selClear();