* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author André Pönitz
+ * \author André Pönitz
*
* Full author contact details are available in file CREDITS.
*/
#include "Font.h"
#include "Undo.h"
+#include "mathed/MathParser_flags.h"
+
#include <vector>
// The public inheritance should go in favour of a suitable data member
// (or maybe private inheritance) at some point of time.
-class Cursor : public DocIterator {
+class Cursor : public DocIterator
+{
public:
/// create the cursor of a BufferView
explicit Cursor(BufferView & bv);
//
/// selection active?
bool selection() const { return selection_; }
- /// selection active?
- bool & selection() { return selection_; }
+ /// set selection;
+ void setSelection(bool sel) { selection_ = sel; }
/// do we have a multicell selection?
bool selIsMultiCell() const
{ return selection_ && selBegin().idx() != selEnd().idx(); }
/// did we place the anchor?
bool mark() const { return mark_; }
/// did we place the anchor?
- bool & mark() { return mark_; }
+ void setMark(bool mark) { mark_ = mark; }
///
void setSelection();
/// set selection at given position
DocIterator selectionBegin() const;
/// access start of selection
DocIterator selectionEnd() const;
- /// FIXME: document this
+ /**
+ * Update the selection status and save permanent
+ * selection if needed.
+ * @param selecting the new selection status
+ * @return whether the selection status has changed
+ */
bool selHandle(bool selecting);
///
docstring selectionAsString(bool label) const;
void resetAnchor();
/// access to owning BufferView
BufferView & bv() const;
- /// access to owning Buffer
- Buffer & buffer() const;
/// get some interesting description of top position
void info(odocstream & os) const;
/// are we in math mode (2), text mode (1) or unsure (0)?
/// move the cursor up by sending an internal LFUN_DOWN,
/// return true if fullscreen update is needed
bool down();
+ /// whether the cursor is either at the first or last row
+ bool atFirstOrLastRow(bool up);
/// move up/down in a text inset, called for LFUN_UP/DOWN,
/// return true if successful, updateNeeded set to true if fullscreen
/// update is needed, otherwise it's not touched
///
void niceInsert(MathAtom const & at);
///
- void niceInsert(docstring const & str);
+ void niceInsert(docstring const & str, Parse::flags f = Parse::NORMAL);
/// in pixels from top of screen
void setScreenPos(int x, int y);
/**
- * Notifies all insets which appear in old, but not in cur. Make
- * Sure that the cursor old is valid, i.e. all inset pointers
+ * 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.
*/
-bool notifyCursorLeaves(Cursor const & old, Cursor & cur);
+bool notifyCursorLeavesOrEnters(Cursor const & old, Cursor & cur);
} // namespace lyx