From 017649d4a5f4c4307f3e8e80254c3c4eb6d4b3e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Mon, 18 Aug 2003 08:35:25 +0000 Subject: [PATCH] Alfredo's getRowNearY patch git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7564 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/text.C | 45 ++++++++++++++------------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/src/text.C b/src/text.C index 22c020db0c..aac2638915 100644 --- a/src/text.C +++ b/src/text.C @@ -2152,34 +2152,18 @@ RowList::iterator LyXText::cursorIRow() const RowList::iterator LyXText::getRowNearY(int & y, ParagraphList::iterator & pit) const { - ParagraphList::iterator const end = ownerParagraphs().end(); //lyxerr << "getRowNearY: y " << y << endl; - - for (pit = ownerParagraphs().begin(); pit != end; ++pit) { - RowList::iterator rit = pit->rows.begin(); - RowList::iterator rend = pit->rows.end(); - - for ( ; rit != rend; ++rit) { - //rit->dump(); - if (rit->y() >= y) { - if (rit != firstRow()) - previousRow(pit, rit); - y = rit->y(); - return rit; - } - } - } - -#if 1 pit = ownerParagraphs().begin(); - y = 0; - lyxerr << "row not found near " << y << " pit: " << &*pit << endl; - return firstRow(); -#else - pit = boost::prior(ownerParagraphs().end()); - lyxerr << "row not found near " << y << " pit: " << &*pit << endl; - return lastRow(); -#endif + RowList::iterator rit = firstRow(); + RowList::iterator rend = endRow(); + + for (; rit != rend; nextRow(pit, rit)) + if (rit->y() > y) + break; + + previousRow(pit, rit); + y = rit->y(); + return rit; } @@ -2210,12 +2194,11 @@ RowList::iterator LyXText::endRow() const void LyXText::nextRow(ParagraphList::iterator & pit, RowList::iterator & rit) const { - if (boost::next(rit) != pit->rows.end()) { - rit = boost::next(rit); - } else { + ++rit; + if (rit == pit->rows.end()) { ++pit; if (pit == ownerParagraphs().end()) - rit = boost::next(rit); + --pit; else rit = pit->rows.begin(); } @@ -2226,7 +2209,7 @@ void LyXText::previousRow(ParagraphList::iterator & pit, RowList::iterator & rit) const { if (rit != pit->rows.begin()) - rit = boost::prior(rit); + --rit; else { Assert(pit != ownerParagraphs().begin()); --pit;