On Sat, Jan 21, 2006 at 02:13:47PM +0200, Martin Vermeer wrote: > On Fri, Jan 20, 2006 at 10:06:15PM +0200, Martin Vermeer wrote: > > On Fri, Jan 20, 2006 at 04:04:36PM +0100, Jean-Marc Lasgouttes wrote: > > > >>>>> "Martin" == Martin Vermeer <[EMAIL PROTECTED]> writes: > > ... > > BTW2, we still have the cursor movement bug that the cursor doesn't > move straight into an equation, but moves first to the left side of it, > and only then in (to the correct x position too) on the next cursor > up/down. This appears to be connected with checkInsetHit and editXY, > which ought to be called recursively but don't seem to be. Someone > should look into that.
A patch for this is attached. An unbelievable story really... when doing cursor up/down, the new y co-ordinate is just _one pixel_ into the next/previous row! Therefore the test for being inside a math inset will only trigger for the hull inset, not for anything inside there like an array inset... The patch makes cursor movement a little more generous ;-) Works well on the various math insets in the user Guide. - Martin
Index: text2.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text2.C,v
retrieving revision 1.637
diff -u -p -r1.637 text2.C
--- text2.C 4 Jan 2006 14:24:40 -0000 1.637
+++ text2.C 21 Jan 2006 22:50:10 -0000
@@ -1031,7 +1047,8 @@ bool LyXText::cursorUp(LCursor & cur)
if (!cur.selection()) {
int const y = bv_funcs::getPos(cur, cur.boundary()).y_;
LCursor old = cur;
- editXY(cur, x, y - par.rows()[row].ascent() - 1);
+ // Go to middle of previous row:
+ editXY(cur, x, y - par.rows()[row].height() - 12);
cur.clearSelection();
// This happens when you move out of an inset.
@@ -1077,7 +1094,8 @@ bool LyXText::cursorDown(LCursor & cur)
if (!cur.selection()) {
int const y = bv_funcs::getPos(cur, cur.boundary()).y_;
LCursor old = cur;
- editXY(cur, x, y + par.rows()[row].descent() + 1);
+ // To middle of next row
+ editXY(cur, x, y + par.rows()[row].height());
cur.clearSelection();
// This happens when you move out of an inset.
pgpWRgu5lNgLw.pgp
Description: PGP signature
