]> git.lyx.org Git - lyx.git/blobdiff - src/Cursor.h
don't forget to pack numpunct_lyx_char_type.h
[lyx.git] / src / Cursor.h
index b19a12a9ae80e2acc95b53ef8b8850246340437f..c2c7a5d87361b688b7c0c454f395188c036e15a8 100644 (file)
@@ -50,7 +50,7 @@ public:
        /// dispatch from innermost inset upwards
        void dispatch(FuncRequest const & cmd);
        /// get the resut of the last dispatch
-       DispatchResult result() const;
+       DispatchResult const & result() const;
        /// add a new cursor slice
        void push(Inset & inset);
        /// add a new cursor slice, place cursor at front (move backwards)
@@ -201,7 +201,11 @@ public:
        int textTargetOffset() const;
 
        /// access to normalized selection anchor
-       CursorSlice anchor() const;
+       CursorSlice normalAnchor() const;
+       // FIXME: this can't be a const & and a const function because
+       // LFUN_TAB_* wants to move the real anchor.
+       /// access to real selection anchor
+       DocIterator & realAnchor();
        /// sets anchor to cursor position
        void resetAnchor();
        /// access to owning BufferView
@@ -285,18 +289,20 @@ public:
        void checkBufferStructure();
 
 public:
-       ///
-       BufferView * bv_;
 //private:
-       /// the anchor position
-       DocIterator anchor_;
        
        ///
-       DispatchResult disp_;
+       DocIterator const & beforeDispatchCursor() const { return beforeDispatchCursor_; }
        ///
-       DocIterator const & beforeDispatchCursor() { return beforeDispatchCursor_; }
-       
+       void saveBeforeDispatchPosXY();
+
 private:
+       ///
+       BufferView * bv_;
+       /// the anchor position
+       DocIterator anchor_;
+       ///
+       mutable DispatchResult disp_;
        /**
         * The target x position of the cursor. This is used for when
         * we have text like :
@@ -325,6 +331,10 @@ private:
        bool logicalpos_;
        /// position before dispatch started
        DocIterator beforeDispatchCursor_;
+       /// cursor screen coordinates before dispatch started
+       int beforeDispatchPosX_;
+       int beforeDispatchPosY_;
+
 
 // FIXME: make them private.
 public: