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);
//
std::string selectionAsString(bool label) const;
///
- void paste(std::string const & data);
- ///
std::string currentState();
/// auto-correct mode
/// insert an inset
void insert(InsetBase *);
/// insert a single char
- void insert(char c);
+ void insert(lyx::char_type c);
/// insert a string
void insert(std::string const & str);
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);
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:
/// 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