]> git.lyx.org Git - lyx.git/blobdiff - src/cursor.h
Add GTK bibitem dialog
[lyx.git] / src / cursor.h
index fa90fd6ad9b115e8a1e2a533f258b5dbfd15bb4e..1ec6255b0b8ee38b220ec36607e04eead5e542d3 100644 (file)
@@ -23,6 +23,7 @@ class BufferView;
 class FuncStatus;
 class FuncRequest;
 class Point;
+class LyXFont;
 
 // these should go
 class MathUnknownInset;
@@ -42,14 +43,6 @@ public:
        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
        void push(InsetBase & inset);
        /// add a new cursor slice, place cursor on left end
@@ -60,6 +53,8 @@ public:
        bool popLeft();
        /// pop one slice off the cursor stack and go right
        bool popRight();
+       /// make sure we are outside of given inset
+       void leaveInset(InsetBase const & inset);
        /// sets cursor part
        void setCursor(DocIterator const & it);
 
@@ -107,8 +102,6 @@ public:
        bool & macromode() { return macromode_; }
        /// returns x,y position
        void getPos(int & x, int & y) const;
-       /// returns cursor dimension
-       void getDim(int & asc, int & desc) const;
 
        //
        // common part
@@ -153,14 +146,33 @@ public:
        void reset(InsetBase &);
        /// for spellchecking
        void replaceWord(std::string const & replacestring);
-       /// the event was not (yet) dispatched
+       /**
+        * the event was not (yet) dispatched.
+        *
+        * Should only be called by an inset's doDispatch() method. It means:
+        * I, the doDispatch() method of InsetFoo, hereby declare that I am
+        * not able to handle that request and trust my parent will do the
+        * Right Thing (even if my getStatus partner said that I can do it).
+        * It is sort of a kludge that should be used only rarely...
+        */
        void undispatched();
        /// the event was already dispatched
        void dispatched();
        /// call update() when done
        void needsUpdate();
-       /// don't call update() when done
+       /**
+        * don't call update() when done
+        *
+        * Should only be called by an inset's doDispatch() method. It means:
+        * I handled that request and I can reassure you that the screen does
+        * not need to be re-drawn and all entries in the coord cache stay
+        * valid (and there are no other things to put in the coord cache).
+        * This is a fairly rare event as well and only some optimization.
+        * Not using noUpdate() should never be wrong.
+        */
        void noUpdate();
+       /// fix cursor in circumstances that should never happen
+       void fixIfBroken();
 
        /// output
        friend std::ostream & operator<<(std::ostream & os, LCursor const & cur);
@@ -194,6 +206,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:
 
@@ -239,8 +256,10 @@ public:
        /// 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
@@ -283,8 +302,9 @@ public:
        bool openable(MathAtom const &) const;
        ///
        Encoding const * getEncoding() const;
+       /// font at cursor position
+       LyXFont getFont() const;
 };
 
 
-
 #endif // LYXCURSOR_H