]> git.lyx.org Git - features.git/commitdiff
#6401 improve doc iterator to allow easy backward navigation
authorStephan Witt <switt@lyx.org>
Sun, 16 Aug 2020 14:54:03 +0000 (16:54 +0200)
committerStephan Witt <switt@lyx.org>
Sun, 16 Aug 2020 14:54:03 +0000 (16:54 +0200)
src/DocIterator.cpp
src/DocIterator.h

index 0f4bc10fac73a0e1fda35d8f4dcc9e044bfd2a9f..6eba5a792e2d472d786feda2bf769e82b8dacb37 100644 (file)
@@ -500,6 +500,18 @@ void DocIterator::backwardPos()
 }
 
 
+void DocIterator::backwardPosIgnoreCollapsed()
+{
+       backwardPos();
+       if (inTexted()) {
+               Inset const * ins = realInset();
+               if (ins && !ins->editable()) {
+                       pop_back(); // move out of collapsed inset
+               }
+       }
+}
+
+
 #if 0
 // works, but currently not needed
 void DocIterator::backwardInset()
index 8ee4d4e373c790f50a909cdf2eca6c6d812eca3c..69930fcc7d09b3e50f3dc7e08bd5c30c87960bac 100644 (file)
@@ -69,6 +69,8 @@ public:
 
        /// does this iterator have any content?
        bool empty() const { return slices_.empty(); }
+       /// is this the begin position?
+       bool atBegin() const { return depth() == 1 && pit() == 0 && pos() == 0; }
        /// is this the end position?
        bool atEnd() const { return slices_.empty(); }
 
@@ -210,6 +212,8 @@ public:
        void forwardInset();
        /// move backward one logical position
        void backwardPos();
+       /// move backward one logical position, skip collapsed insets
+       void backwardPosIgnoreCollapsed();
        /// move backward one physical character or inset
        void backwardChar();
        /// move backward one paragraph