Conceptually there is only one 'target x position' per BufferView, not
one per inset. And the LyXCursors used for selection have not been using
their x_fix at all.
Small step towards cursor globalization. [Finally we'd have one 'real'
cursor per bv]
Andre'
--
Those who desire to give up Freedom in order to gain Security, will not have,
nor do they deserve, either one. (T. Jefferson or B. Franklin or both...)
Index: BufferView.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView.C,v
retrieving revision 1.203
diff -u -p -r1.203 BufferView.C
--- BufferView.C 20 Oct 2003 11:41:21 -0000 1.203
+++ BufferView.C 3 Nov 2003 17:34:50 -0000
@@ -56,7 +56,8 @@ extern BufferList bufferlist;
BufferView::BufferView(LyXView * owner, int xpos, int ypos,
int width, int height)
- : pimpl_(new Pimpl(this, owner, xpos, ypos, width, height))
+ : pimpl_(new Pimpl(this, owner, xpos, ypos, width, height)),
+ x_fix_(0)
{
text = 0;
}
@@ -579,4 +580,16 @@ void BufferView::haveSelection(bool sel)
int BufferView::workHeight() const
{
return pimpl_->workarea().workHeight();
+}
+
+
+void BufferView::x_fix(int x)
+{
+ x_fix_ = x;
+}
+
+
+int BufferView::x_fix() const
+{
+ return x_fix_;
}
Index: BufferView.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView.h,v
retrieving revision 1.147
diff -u -p -r1.147 BufferView.h
--- BufferView.h 6 Oct 2003 15:41:57 -0000 1.147
+++ BufferView.h 3 Nov 2003 17:34:51 -0000
@@ -201,6 +201,11 @@ public:
/// execute the given function
bool dispatch(FuncRequest const & argument);
+
+ /// set target x position of cursor
+ void BufferView::x_fix(int x);
+ /// return target x position of cursor
+ int BufferView::x_fix() const;
private:
/// Set the current locking inset
@@ -210,6 +215,21 @@ private:
friend struct BufferView::Pimpl;
Pimpl * pimpl_;
+
+ /**
+ * The target x position of the cursor. This is used for when
+ * we have text like :
+ *
+ * blah blah blah blah| blah blah blah
+ * blah blah blah
+ * blah blah blah blah blah blah
+ *
+ * When we move onto row 3, we would like to be vertically aligned
+ * with where we were in row 1, despite the fact that row 2 is
+ * shorter than x()
+ */
+ int x_fix_;
+
};
#endif // BUFFERVIEW_H
Index: lyxcursor.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxcursor.C,v
retrieving revision 1.26
diff -u -p -r1.26 lyxcursor.C
--- lyxcursor.C 9 Oct 2003 10:52:07 -0000 1.26
+++ lyxcursor.C 3 Nov 2003 17:34:51 -0000
@@ -17,7 +17,7 @@
LyXCursor::LyXCursor()
- : par_(-1), pos_(0), boundary_(false), x_(0), x_fix_(0), y_(0)
+ : par_(-1), pos_(0), boundary_(false), x_(0), y_(0)
{}
@@ -62,21 +62,10 @@ void LyXCursor::x(int n)
x_ = n;
}
+
int LyXCursor::x() const
{
return x_;
-}
-
-
-void LyXCursor::x_fix(int i)
-{
- x_fix_ = i;
-}
-
-
-int LyXCursor::x_fix() const
-{
- return x_fix_;
}
Index: lyxcursor.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxcursor.h,v
retrieving revision 1.39
diff -u -p -r1.39 lyxcursor.h
--- lyxcursor.h 9 Oct 2003 10:52:07 -0000 1.39
+++ lyxcursor.h 3 Nov 2003 17:34:51 -0000
@@ -45,21 +45,6 @@ public:
void x(int i);
/// return the x position in pixels
int x() const;
- /// set the cached x position
- void x_fix(int i);
- /**
- * Return the cached x position of the cursor. This is used for when
- * we have text like :
- *
- * blah blah blah blah| blah blah blah
- * blah blah blah
- * blah blah blah blah blah blah
- *
- * When we move onto row 3, we would like to be vertically aligned
- * with where we were in row 1, despite the fact that row 2 is
- * shorter than x()
- */
- int x_fix() const;
/// set the y position in pixels
void y(int i);
/// return the y position in pixels
@@ -88,8 +73,6 @@ private:
bool boundary_;
/// the pixel x position
int x_;
- /// the cached x position
- int x_fix_;
/// the pixel y position
int y_;
};
Index: lyxfunc.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxfunc.C,v
retrieving revision 1.530
diff -u -p -r1.530 lyxfunc.C
--- lyxfunc.C 1 Nov 2003 15:45:14 -0000 1.530
+++ lyxfunc.C 3 Nov 2003 17:34:51 -0000
@@ -963,7 +963,7 @@ void LyXFunc::dispatch(FuncRequest const
text->cursor.x() + inset_x,
text->cursor.y() -
row.baseline() - 1);
- text->cursor.x_fix(text->cursor.x());
+ view()->x_fix(text->cursor.x());
#else
text->cursorUp(view());
#endif
@@ -986,7 +986,7 @@ void LyXFunc::dispatch(FuncRequest const
text->cursor.y() -
row.baseline() +
row.height() + 1);
- text->cursor.x_fix(text->cursor.x());
+ view()->x_fix(text->cursor.x());
#else
text->cursorDown(view());
#endif
Index: text2.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text2.C,v
retrieving revision 1.490
diff -u -p -r1.490 text2.C
--- text2.C 29 Oct 2003 10:47:14 -0000 1.490
+++ text2.C 3 Nov 2003 17:34:51 -0000
@@ -1339,9 +1339,8 @@ void LyXText::setCursor(LyXCursor & cur,
BOOST_ASSERT(false);
}
// now get the cursors x position
- float x = getCursorX(pit, row, pos, boundary);
- cur.x(int(x));
- cur.x_fix(cur.x());
+ cur.x(int(getCursorX(pit, row, pos, boundary)));
+ bv()->x_fix(cur.x());
}
@@ -1620,7 +1619,7 @@ void LyXText::cursorUp(bool selecting)
ParagraphList::iterator cpit = cursorPar();
Row const & crow = *cpit->getRow(cursor.pos());
#if 1
- int x = cursor.x_fix();
+ int x = bv()->x_fix();
int y = cursor.y() - crow.baseline() - 1;
setCursorFromCoordinates(x, y);
if (!selecting) {
@@ -1637,7 +1636,7 @@ void LyXText::cursorUp(bool selecting)
#else
lyxerr << "cursorUp: y " << cursor.y() << " bl: " <<
crow.baseline() << endl;
- setCursorFromCoordinates(cursor.x_fix(),
+ setCursorFromCoordinates(bv()->x_fix(),
cursor.y() - crow.baseline() - 1);
#endif
}
@@ -1648,7 +1647,7 @@ void LyXText::cursorDown(bool selecting)
ParagraphList::iterator cpit = cursorPar();
Row const & crow = *cpit->getRow(cursor.pos());
#if 1
- int x = cursor.x_fix();
+ int x = bv()->x_fix();
int y = cursor.y() - crow.baseline() + crow.height() + 1;
setCursorFromCoordinates(x, y);
if (!selecting) {
@@ -1663,7 +1662,7 @@ void LyXText::cursorDown(bool selecting)
}
}
#else
- setCursorFromCoordinates(cursor.x_fix(),
+ setCursorFromCoordinates(bv()->x_fix(),
cursor.y() - crow.baseline() + crow.height() + 1);
#endif
}
Index: text3.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text3.C,v
retrieving revision 1.166
diff -u -p -r1.166 text3.C
--- text3.C 1 Nov 2003 15:45:14 -0000 1.166
+++ text3.C 3 Nov 2003 17:34:51 -0000
@@ -260,7 +260,7 @@ void LyXText::cursorPrevious()
return;
}
- setCursorFromCoordinates(cursor.x_fix(), y);
+ setCursorFromCoordinates(bv()->x_fix(), y);
finishUndo();
if (crit == bv()->text->cursorRow()) {
@@ -313,7 +313,7 @@ void LyXText::cursorNext()
Row const & rr = *getRowNearY(y, dummypit);
y = dummypit->y + rr.y_offset();
- setCursorFromCoordinates(cursor.x_fix(), y);
+ setCursorFromCoordinates(bv()->x_fix(), y);
// + bv->workHeight());
finishUndo();
@@ -1326,7 +1326,7 @@ DispatchResult LyXText::dispatch(FuncReq
bv->text->setCursorFromCoordinates(x, y + screen_first);
finishUndo();
bv->text->selection.cursor = bv->text->cursor;
- bv->text->cursor.x_fix(bv->text->cursor.x());
+ bv->x_fix(bv->text->cursor.x());
if (bv->fitCursor())
selection_possible = false;
Index: insets/insettext.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettext.C,v
retrieving revision 1.522
diff -u -p -r1.522 insettext.C
--- insets/insettext.C 3 Nov 2003 16:46:43 -0000 1.522
+++ insets/insettext.C 3 Nov 2003 17:34:51 -0000
@@ -512,7 +512,7 @@ void InsetText::lfunMousePress(FuncReque
text_.setCursorFromCoordinates(cmd.x, cmd.y + dim_.asc);
// set the selection cursor!
text_.selection.cursor = text_.cursor;
- text_.cursor.x_fix(text_.cursor.x());
+ bv->x_fix(text_.cursor.x());
text_.clearSelection();
updateLocal(bv, false);
@@ -584,7 +584,7 @@ void InsetText::lfunMouseMotion(FuncRequ
BufferView * bv = cmd.view();
LyXCursor cur = text_.cursor;
text_.setCursorFromCoordinates (cmd.x, cmd.y + dim_.asc);
- text_.cursor.x_fix(text_.cursor.x());
+ bv->x_fix(text_.cursor.x());
if (cur == text_.cursor)
return;
text_.setSelection();
@@ -632,7 +632,7 @@ InsetText::priv_dispatch(FuncRequest con
if (!checkAndActivateInset(bv, cmd.x, tmp_y,
mouse_button::none)) {
text_.setCursorFromCoordinates(cmd.x, cmd.y +
dim_.asc);
text_.cursor.x(text_.cursor.x());
- text_.cursor.x_fix(text_.cursor.x());
+ bv->x_fix(text_.cursor.x());
}
}