]> git.lyx.org Git - lyx.git/blobdiff - src/cursor.h
Account for kerning when positioning scripts in the MathFontOld and
[lyx.git] / src / cursor.h
index 773513a16192c9e8abe466e7b5c3d18ab49aaaa8..557ceae7e12b8270190220e3b7f6afa1f136bb96 100644 (file)
 #include <iosfwd>
 #include <vector>
 
+
+namespace lyx {
+
 class Buffer;
 class BufferView;
 class FuncStatus;
 class FuncRequest;
-class Point;
 class LyXFont;
+class Row;
 
 // these should go
-class MathUnknownInset;
+class InsetMathUnknown;
 class Encoding;
 
 
@@ -72,7 +75,7 @@ public:
        ///
        void setSelection();
        /// set selection at given position
-       void setSelection(DocIterator const & where, size_t n);
+       void setSelection(DocIterator const & where, int n);
        ///
        void clearSelection();
        /// access start of selection
@@ -84,13 +87,11 @@ public:
        /// access start of selection
        DocIterator selectionEnd() const;
        ///
-       void selHandle(bool selecting);
+       bool selHandle(bool selecting);
        //
-       std::string selectionAsString(bool label) const;
-       ///
-       void paste(std::string const & data);
+       docstring selectionAsString(bool label) const;
        ///
-       std::string currentState();
+       docstring currentState();
 
        /// auto-correct mode
        bool autocorrect() const { return autocorrect_; }
@@ -102,6 +103,8 @@ public:
        bool & macromode() { return macromode_; }
        /// returns x,y position
        void getPos(int & x, int & y) const;
+       /// the row in the paragraph we're in
+       Row const & textRow() const;
 
        //
        // common part
@@ -114,9 +117,9 @@ public:
        /// insert an inset
        void insert(InsetBase *);
        /// insert a single char
-       void insert(char c);
+       void insert(char_type c);
        /// insert a string
-       void insert(std::string const & str);
+       void insert(docstring const & str);
 
        /// in pixels from left of screen
        int targetX() const;
@@ -138,7 +141,7 @@ public:
        /// access to owning Buffer
        Buffer & buffer() const;
        /// get some interesting description of top position
-       void info(std::ostream & os) const;
+       void info(odocstream & os) const;
        /// are we in math mode (2), text mode (1) or unsure (0)?
        int currentMode();
        /// reset cursor bottom to the beginning of the given inset
@@ -158,8 +161,8 @@ public:
        void undispatched();
        /// the event was already dispatched
        void dispatched();
-       /// call update() when done
-       void needsUpdate();
+       /// Set which update should be done
+       void updateFlags(Update::flags f);
        /**
         * don't call update() when done
         *
@@ -206,6 +209,11 @@ private:
        bool selection_;
        /// are we on the way to get one?
        bool mark_;
+       /// If true, we are behind the previous char, otherwise we are in front
+       // of the next char. This only make a difference when we are in front
+       // of a big inset spanning a whole row and computing coordinates for
+       // displaying the cursor.
+       bool logicalpos_;
 
 private:
 
@@ -246,17 +254,19 @@ public:
        ///
        void niceInsert(MathAtom const & at);
        ///
-       void niceInsert(std::string const & str);
+       void niceInsert(docstring const & str);
 
        /// in pixels from top of screen
        void setScreenPos(int x, int y);
        /// current offset in the top cell
-       /// interpret name a name of a macro
-       void macroModeClose();
+
+       /// interpret name a name of a macro. Returns true if
+       /// something got inserted.
+       bool macroModeClose();
        /// are we currently typing the name of a macro?
        bool inMacroMode() const;
        /// get access to the macro we are currently typing
-       MathUnknownInset * activeMacro();
+       InsetMathUnknown * activeMacro();
 
        /// replace selected stuff with at, placing the former
        // selection in given cell of atom
@@ -278,17 +288,17 @@ public:
        void handleFont(std::string const & font);
 
        /// display a message
-       void message(std::string const & msg) const;
+       void message(docstring const & msg) const;
        /// display an error message
-       void errorMessage(std::string const & msg) const;
+       void errorMessage(docstring const & msg) const;
        ///
-       std::string getPossibleLabel();
+       docstring getPossibleLabel();
 
        /// moves position somehow up or down
        bool goUpDown(bool up);
 
        /// the name of the macro we are currently inputting
-       std::string macroName();
+       docstring macroName();
        /// where in the curent cell does the macro name start?
        int macroNamePos();
        /// can we enter the inset?
@@ -300,4 +310,7 @@ public:
 };
 
 
+
+} // namespace lyx
+
 #endif // LYXCURSOR_H