]> git.lyx.org Git - lyx.git/blobdiff - src/cursor.h
Implement os::current_root for native Win32 builds.
[lyx.git] / src / cursor.h
index d59e4312bb9e9f3d30f96dc36f5c96194e8c49e0..fa90fd6ad9b115e8a1e2a533f258b5dbfd15bb4e 100644 (file)
 #include <iosfwd>
 #include <vector>
 
+class Buffer;
 class BufferView;
 class FuncStatus;
 class FuncRequest;
+class Point;
 
 // these should go
 class MathUnknownInset;
@@ -37,8 +39,15 @@ public:
        explicit LCursor(BufferView & bv);
 
        /// dispatch from innermost inset upwards
-       DispatchResult dispatch(FuncRequest const & cmd);
-       /// are we willing to handle this event?
+       void dispatch(FuncRequest const & cmd);
+       /// get the resut of the last dispatch
+       DispatchResult result() const;
+        /**
+        * \returns true if this function made a definitive decision on
+        * whether the inset at this cursor position wants to handle the
+        * request \p cmd or not. The result of this decision is put into
+        * \p status.
+        */
        bool getStatus(FuncRequest const & cmd, FuncStatus & flag);
 
        /// add a new cursor slice
@@ -52,7 +61,7 @@ public:
        /// pop one slice off the cursor stack and go right
        bool popRight();
        /// sets cursor part
-       void setCursor(DocIterator const & it, bool sel);
+       void setCursor(DocIterator const & it);
 
        //
        // selection
@@ -72,32 +81,15 @@ public:
        ///
        void clearSelection();
        /// access start of selection
-       CursorSlice const & selBegin() const;
+       CursorSlice selBegin() const;
        /// access end of selection
-       CursorSlice const & selEnd() const;
+       CursorSlice selEnd() const;
        /// access start of selection
        DocIterator selectionBegin() const;
        /// access start of selection
        DocIterator selectionEnd() const;
        ///
-       std::string grabSelection();
-       ///
-       void eraseSelection();
-       ///
-       std::string grabAndEraseSelection();
-       // other selection methods
-       ///
-       void selCopy();
-       ///
-       void selCut();
-       ///
-       void selDel();
-       /// pastes n-th element of cut buffer
-       void selPaste(size_t n);
-       ///
        void selHandle(bool selecting);
-       /// clears or deletes selection depending on lyxrc setting
-       void selClearOrDel();
        //
        std::string selectionAsString(bool label) const;
        ///
@@ -133,23 +125,25 @@ public:
        /// insert a string
        void insert(std::string const & str);
 
+       /// in pixels from left of screen
+       int targetX() const;
        /// write acess to target x position of cursor
        int & x_target();
        /// return target x position of cursor
        int x_target() const;
+       /// set targetX in current position
+       void setTargetX();
        /// clear target x position of cursor
        void clearTargetX();
 
-       /// access to selection anchor
-       CursorSlice & anchor();
-       /// access to selection anchor
-       CursorSlice const & anchor() const;
-       /// cache the absolute coordinate from the top inset
-       void updatePos();
+       /// access to normalized selection anchor
+       CursorSlice anchor() const;
        /// sets anchor to cursor position
        void resetAnchor();
        /// access to owning BufferView
        BufferView & bv() const;
+       /// access to owning Buffer
+       Buffer & buffer() const;
        /// get some interesting description of top position
        void info(std::ostream & os) const;
        /// are we in math mode (2), text mode (1) or unsure (0)?
@@ -159,12 +153,12 @@ public:
        void reset(InsetBase &);
        /// for spellchecking
        void replaceWord(std::string const & replacestring);
-       /// update our view
-       void update();
        /// the event was not (yet) dispatched
        void undispatched();
        /// the event was already dispatched
        void dispatched();
+       /// call update() when done
+       void needsUpdate();
        /// don't call update() when done
        void noUpdate();
 
@@ -181,9 +175,8 @@ public:
        ///
        DispatchResult disp_;
 
+
 private:
-       ///
-       int cached_y_;
        /**
         * The target x position of the cursor. This is used for when
         * we have text like :
@@ -202,6 +195,8 @@ private:
        /// are we on the way to get one?
        bool mark_;
 
+private:
+
        //
        // math specific stuff that could be promoted to "global" later
        //
@@ -243,10 +238,6 @@ public:
 
        /// in pixels from top of screen
        void setScreenPos(int x, int y);
-       /// in pixels from left of screen
-       int targetX() const;
-       /// adjust anchor position after deletions/insertions
-       void adjust(pos_type from, int diff);
        /// current offset in the top cell
        /// interpret name a name of a macro
        void macroModeClose();
@@ -266,9 +257,6 @@ public:
        /// mark current cursor trace for redraw
        void touch();
 
-       /// returns the normalized anchor of the selection
-       CursorSlice normalAnchor();
-
        /// hack for reveal codes
        void markInsert();
        void markErase();
@@ -295,12 +283,8 @@ public:
        bool openable(MathAtom const &) const;
        ///
        Encoding const * getEncoding() const;
-
-private:
-       /// moves position closest to (x, y) in current cell
-       void bruteFind2(int x, int y);
-       /// moves position closest to (x, y) in given box
-       bool bruteFind(int x, int y, int xlow, int xhigh, int ylow, int yhigh);
 };
 
+
+
 #endif // LYXCURSOR_H