* src/cursor.C

(bruteFind): only iterate over the paragraphs that are
	in the CoordCache (bug 2217)

	* status.14x
	* RELEASE-NOTES: update accordingly



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_4_X@13477 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2006-03-24 13:20:41 +00:00
parent 6370b5ca98
commit 94570286e8
4 changed files with 26 additions and 11 deletions

View File

@ -1,16 +1,14 @@
Known issues with version 1.4.1
--------------------------------
This file describes some known problems in LyX 1.4.0 that did not
This file describes some known problems in LyX 1.4.1 that did not
occur in 1.3.7. Note that fixes are available for many of these, but
they have not yet been applied because of incomplete testing.
** Noticeable delays when editing a large document
** Noticeable delays when editing documents
- exiting a math formula with the keyboard.
http://bugzilla.lyx.org/show_bug.cgi?id=2217
- creating/deleting paragraphs.
- creating/deleting paragraphs in large documents or documents with
images and previews.
http://bugzilla.lyx.org/show_bug.cgi?id=2287
** Change tracking

View File

@ -1,3 +1,8 @@
2006-02-20 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* cursor.C (bruteFind): only iterate over the paragraphs that are
in the CoordCache (bug 2217)
2006-03-22 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* lyxtextclass.C (hasTocLevels): new method.

View File

@ -127,16 +127,26 @@ namespace {
BOOST_ASSERT(!cursor.empty());
InsetBase & inset = cursor[0].inset();
DocIterator it = doc_iterator_begin(inset);
DocIterator const et = doc_iterator_end(inset);
CoordCache::InnerParPosCache const & cache = theCoords.getParPos().find(cursor.bottom().text())->second;
// Get an iterator on the first paragraph in the cache
DocIterator it(inset);
it.push_back(CursorSlice(inset));
it.pit() = cache.begin()->first;
// Get an iterator after the last paragraph in the cache
DocIterator et(inset);
et.push_back(CursorSlice(inset));
et.pit() = boost::prior(cache.end())->first;
if (et.pit() >= et.lastpit())
et = doc_iterator_end(inset);
else
++et.pit();
double best_dist = std::numeric_limits<double>::max();;
DocIterator best_cursor = et;
for ( ; it != et; it.forwardPos(true)) {
// avoid invalid nesting when selecting
if (bv_funcs::status(&cursor.bv(), it) == bv_funcs::CUR_INSIDE
&& (!cursor.selection() || positionable(it, cursor.anchor_))) {
if (!cursor.selection() || positionable(it, cursor.anchor_)) {
Point p = bv_funcs::getPos(it, false);
int xo = p.x_;
int yo = p.y_;
@ -147,7 +157,7 @@ namespace {
// '<=' in order to take the last possible position
// this is important for clicking behind \sum in e.g. '\sum_i a'
if (d <= best_dist) {
lyxerr << "*" << endl;
// lyxerr << "*" << endl;
best_dist = d;
best_cursor = it;
}

View File

@ -64,6 +64,8 @@ What's new
- Fix crash when deleting row/column in a math array.
- Fix delay when exiting from a math inset (bug 2217).
- Fix positioning of cursor when clicking to right of last nestinset
in a cell.