DocIterator selectionBegin() const;
/// access start of selection
DocIterator selectionEnd() const;
- ///
+ /// FIXME: document this
bool selHandle(bool selecting);
- //
+ ///
docstring selectionAsString(bool label) const;
///
docstring currentState();
* Not using noUpdate() should never be wrong.
*/
void noUpdate();
- /// fix cursor in circumstances that should never happen
- void fixIfBroken();
+ /// fix cursor in circumstances that should never happen.
+ /// \retval true if a fix occured.
+ bool fixIfBroken();
/// output
friend std::ostream & operator<<(std::ostream & os, Cursor const & cur);
///
DispatchResult disp_;
+ ///
+ DocIterator const & beforeDispatchCursor() { return beforeDispatchCursor_; }
private:
/**
/// y position before dispatch started
int beforeDispY_;
/// position before dispatch started
- size_t beforeDispDepth_;
-
+ DocIterator beforeDispatchCursor_;
+
private:
//
bool isInside(Inset const *);
/// make sure cursor position is valid
+ /// FIXME: It does a subset of fixIfBroken. Maybe merge them?
void normalize();
/// mark current cursor trace for redraw
void touch();
};
+/**
+ * Notifies all insets which appear in old, but not in cur. Make
+ * Sure that the cursor old is valid, i.e. als inset pointer
+ * point to valid insets! Use Cursor::fixIfBroken if necessary.
+ */
+bool notifyCursorLeaves(DocIterator const & old, Cursor & cur);
+
} // namespace lyx