]> git.lyx.org Git - lyx.git/blobdiff - src/Cursor.h
SCons: msvc does not need this /TP option any more after we rename .C => .cpp. Also...
[lyx.git] / src / Cursor.h
index c33478d523356f1ce029e343097223f192a9ec31..c56538a2df84148e8c6506c2fe08d8f1359f823e 100644 (file)
@@ -86,9 +86,9 @@ public:
        DocIterator selectionBegin() const;
        /// access start of selection
        DocIterator selectionEnd() const;
-       ///
+       /// FIXME: document this
        bool selHandle(bool selecting);
-       //
+       ///
        docstring selectionAsString(bool label) const;
        ///
        docstring currentState();
@@ -179,8 +179,9 @@ public:
         * Not using noUpdate() should never be wrong.
         */
        void noUpdate();
-       /// fix cursor in circumstances that should never happen
-       void fixIfBroken();
+       /// fix cursor in circumstances that should never happen.
+       /// \retval true if a fix occured.
+       bool fixIfBroken();
 
        /// output
        friend std::ostream & operator<<(std::ostream & os, Cursor const & cur);
@@ -194,6 +195,8 @@ public:
        
        ///
        DispatchResult disp_;
+       ///
+       DocIterator const & beforeDispatchCursor() { return beforeDispatchCursor_; }
        
 private:
        /**
@@ -225,8 +228,8 @@ private:
        /// y position before dispatch started
        int beforeDispY_;
        /// position before dispatch started
-       size_t beforeDispDepth_;
-               
+       DocIterator beforeDispatchCursor_;
+
 private:
 
        //
@@ -256,12 +259,17 @@ public:
        /// return false for empty math insets
        bool backspace();
        /// move the cursor up by sending an internal LFUN_UP
+       /// return true if fullscreen update is needed
        bool up();
-       /// move the cursor up by sending an internal LFUN_DOWN
+       /// move the cursor up by sending an internal LFUN_DOWN,
+       /// return true if fullscreen update is needed
        bool down();
-       /// move up/down in a text inset, called for LFUN_UP/DOWN
-       bool upDownInText(bool up);
+       /// move up/down in a text inset, called for LFUN_UP/DOWN,
+       /// return true if successful, updateNeeded set to true if fullscreen
+       /// update is needed, otherwise it's not touched
+       bool upDownInText(bool up, bool & updateNeeded);
        /// move up/down in math or any non text inset, call for LFUN_UP/DOWN
+       /// return true if successful
        bool upDownInMath(bool up);
        ///
        void plainErase();
@@ -291,6 +299,7 @@ public:
        bool isInside(Inset const *);
 
        /// make sure cursor position is valid
+       /// FIXME: It does a subset of fixIfBroken. Maybe merge them?
        void normalize();
        /// mark current cursor trace for redraw
        void touch();
@@ -323,6 +332,13 @@ public:
 };
 
 
+/**
+ * Notifies all insets which appear in old, but not in cur. Make
+ * Sure that the cursor old is valid, i.e. als inset pointer
+ * point to valid insets! Use Cursor::fixIfBroken if necessary.
+ */
+bool notifyCursorLeaves(DocIterator const & old, Cursor & cur);
+
 
 } // namespace lyx