protected:
/// the anchor position
DocIterator anchor_;
- ///
- mutable DispatchResult disp_;
/// do we have a selection?
bool selection_;
/// are we on the way to get one?
bool mark_;
/// are we in word-selection mode? This is set when double clicking.
bool word_selection_;
- /// 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_;
// FIXME: make them protected.
public:
//
/// selection active?
bool selection() const { return selection_; }
- /// set selection;
- void setSelection(bool sel) { selection_ = sel; }
+ /// set selection; this is lower level than (set|clear)Selection
+ void selection(bool sel) { selection_ = sel; }
/// do we have a multicell selection?
bool selIsMultiCell() const
{ return selection_ && selBegin().idx() != selEnd().idx(); }
bool macromode() const { return macromode_; }
/// are we entering a macro name?
bool & macromode() { return macromode_; }
+
+ /// returns true when all insets in cursor stack are in cache
+ bool inCoordCache() const;
/// returns x,y position
void getPos(int & x, int & y) const;
/// return logical positions between which the cursor is situated
* If the cursor is at the edge of a row, the position which is "over the
* edge" will be returned as -1.
*/
- void getSurroundingPos(pos_type & left_pos, pos_type & right_pos);
+ void getSurroundingPos(pos_type & left_pos, pos_type & right_pos) const;
/// the row in the paragraph we're in
Row const & textRow() const;
bool posVisToNewRow(bool movingLeft);
/// move to right or left extremity of the current row
void posVisToRowExtremity(bool left);
+ /// Should interpretation of the arrow keys be reversed?
+ bool reverseDirectionNeeded() const;
/// insert an inset
void insert(Inset *);
/// access to normalized selection anchor
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();
+ DocIterator const & realAnchor() const { return anchor_; }
+ DocIterator & realAnchor() { return anchor_; }
/// sets anchor to cursor position
void resetAnchor();
/// access to owning BufferView
/**
- * Notifies all insets which appear in old, but not in cur. And then
- * notify all insets which appear in cur, but not in old.
- * Make sure that the cursor old is valid, i.e. all inset pointers
- * point to valid insets! Use Cursor::fixIfBroken if necessary.
+ * Notifies all insets which appear in \c old, but not in \c cur. And then
+ * notify all insets which appear in \c cur, but not in \c old.
+ * \returns true if cursor is now invalid, e.g. if some insets in
+ * higher cursor slices of \c old do not exist anymore. In this case
+ * it may be necessary to use Use Cursor::fixIfBroken.
*/
bool notifyCursorLeavesOrEnters(Cursor const & old, Cursor & cur);