diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 475ec6f0f9..b8d8186428 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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 diff --git a/src/ChangeLog b/src/ChangeLog index 27916c3d1c..4f4b46f01b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2006-02-20 Jean-Marc Lasgouttes + + * cursor.C (bruteFind): only iterate over the paragraphs that are + in the CoordCache (bug 2217) + 2006-03-22 Jean-Marc Lasgouttes * lyxtextclass.C (hasTocLevels): new method. diff --git a/src/cursor.C b/src/cursor.C index 1bbae28a5c..a7fb543984 100644 --- a/src/cursor.C +++ b/src/cursor.C @@ -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::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; } diff --git a/status.14x b/status.14x index c0c3fb4b31..d499bbcafd 100644 --- a/status.14x +++ b/status.14x @@ -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.