From 57d2f9c0ad96baca7675e1c22e4f1349f849cca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Sat, 12 Jan 2008 23:08:21 +0000 Subject: [PATCH] Five more percent. I'd really prefer if people would not add unused code to critical paths.. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22534 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/DocIterator.cpp | 30 ++++++++++++++++++------------ src/DocIterator.h | 9 +++++++-- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/DocIterator.cpp b/src/DocIterator.cpp index 51d21921a0..f444f42193 100644 --- a/src/DocIterator.cpp +++ b/src/DocIterator.cpp @@ -247,24 +247,16 @@ Inset * DocIterator::innerInsetOfType(int code) const } -void DocIterator::forwardPos(bool ignorecollapsed) +// This duplicates code above, but is in the critical path. +// So please think twice before adding stuff +void DocIterator::forwardPos() { - //this dog bites his tail + // this dog bites his tail if (empty()) { push_back(CursorSlice(*inset_)); return; } - Inset * const nextinset = nextInset(); - // jump over collapsables if they are collapsed - // FIXME: the check for asInsetMath() shouldn't be necessary - // but math insets do not return a sensible editable() state yet. - if (ignorecollapsed && nextinset && (!nextinset->asInsetMath() - && nextinset->editable() != Inset::HIGHLY_EDITABLE)) { - ++top().pos(); - return; - } - CursorSlice & tip = top(); //lyxerr << "XXX\n" << *this << endl; @@ -302,6 +294,20 @@ void DocIterator::forwardPos(bool ignorecollapsed) } +void DocIterator::forwardPosIgnoreCollapsed() +{ + Inset * const nextinset = nextInset(); + // FIXME: the check for asInsetMath() shouldn't be necessary + // but math insets do not return a sensible editable() state yet. + if (nextinset && !nextinset->asInsetMath() + && nextinset->editable() != Inset::HIGHLY_EDITABLE) { + ++top().pos(); + return; + } + forwardPos(); +} + + void DocIterator::forwardPar() { forwardPos(); diff --git a/src/DocIterator.h b/src/DocIterator.h index 6e730ea685..e36092af74 100644 --- a/src/DocIterator.h +++ b/src/DocIterator.h @@ -159,9 +159,14 @@ public: // /** * move on one logical position, descend into nested insets - * skip collapsed insets if \p ignorecollapsed is true + * including collapsed insets */ - void forwardPos(bool ignorecollapsed = false); + void forwardPos(); + /** + * move on one logical position, descend into nested insets + * skip collapsed insets + */ + void forwardPosIgnoreCollapsed(); /// move on one physical character or inset void forwardChar(); /// move on one paragraph