]> git.lyx.org Git - lyx.git/blobdiff - src/Cursor.h
* Only enter inset which return true on isActive(). This is the behavior in the curso...
[lyx.git] / src / Cursor.h
index 2d0e4386f5a2bb1efbdf7b0d113a412871794082..998b66767987cd0c95b8d00f1635171727aba238 100644 (file)
@@ -25,7 +25,7 @@ class Buffer;
 class BufferView;
 class FuncStatus;
 class FuncRequest;
-class LyXFont;
+class Font;
 class Row;
 
 // these should go
@@ -121,16 +121,21 @@ public:
        /// insert a string
        void insert(docstring const & str);
 
-       /// in pixels from left of screen
+       /// FIXME: rename to something sensible showing difference to x_target()
+       /// in pixels from left of screen, set to current position if unset
        int targetX() const;
-       /// write acess to target x position of cursor
-       int & x_target();
-       /// return target x position of cursor
+       /// set the targetX to x
+       void setTargetX(int x);
+       /// return targetX or -1 if unset
        int x_target() const;
-       /// set targetX in current position
+       /// set targetX to current position
        void setTargetX();
-       /// clear target x position of cursor
+       /// clear targetX, i.e. set it to -1
        void clearTargetX();
+       /// set offset to actual position - targetX
+       void updateTextTargetOffset();
+       /// distance between actual and targeted position during last up/down in text
+       int textTargetOffset() const;
 
        /// access to normalized selection anchor
        CursorSlice anchor() const;
@@ -186,11 +191,10 @@ public:
 //private:
        /// the anchor position
        DocIterator anchor_;
-
+       
        ///
        DispatchResult disp_;
-
-
+       
 private:
        /**
         * The target x position of the cursor. This is used for when
@@ -205,6 +209,8 @@ private:
         * shorter than x()
         */
        int x_target_;
+       /// if a x_target cannot be hit exactly in a text, put the difference here
+       int textTargetOffset_;
        /// do we have a selection?
        bool selection_;
        /// are we on the way to get one?
@@ -214,7 +220,13 @@ private:
        // of a big inset spanning a whole row and computing coordinates for
        // displaying the cursor.
        bool logicalpos_;
-
+       /// x position before dispatch started
+       int beforeDispX_;
+       /// y position before dispatch started
+       int beforeDispY_;
+       /// position before dispatch started
+       size_t beforeDispDepth_;
+               
 private:
 
        //
@@ -243,10 +255,19 @@ public:
        bool erase();
        /// return false for empty math insets
        bool backspace();
-       /// called for LFUN_UP etc
+       /// move the cursor up by sending an internal LFUN_UP
+       /// return true if fullscreen update is needed
        bool up();
-       /// called for LFUN_DOWN etc
+       /// 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,
+       /// 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();
        ///
@@ -294,9 +315,6 @@ public:
        ///
        docstring getPossibleLabel();
 
-       /// moves position somehow up or down
-       bool goUpDown(bool up);
-
        /// the name of the macro we are currently inputting
        docstring macroName();
        /// where in the curent cell does the macro name start?
@@ -306,9 +324,7 @@ public:
        ///
        Encoding const * getEncoding() const;
        /// font at cursor position
-       LyXFont getFont() const;
-       ///
-       bool isRTL() const;
+       Font getFont() const;
 };