X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCursor.cpp;h=70d31860f662fde0fb094a809f60eabbf2d5a24b;hb=ac3f391b46d25784f3129e24658b73c4bc15febf;hp=ad98883954a785e41cf3ed383eadb4d4074f691a;hpb=939503ee85f82be9471e887bfaac3b7829d99d2d;p=lyx.git diff --git a/src/Cursor.cpp b/src/Cursor.cpp index ad98883954..70d31860f6 100644 --- a/src/Cursor.cpp +++ b/src/Cursor.cpp @@ -468,7 +468,7 @@ bool Cursor::posVisRight(bool skip_inset) new_cur.pos() = right_pos; new_cur.boundary(false); if (!skip_inset && - text()->checkAndActivateInsetVisual(new_cur, right_pos>=pos(), false)) { + text()->checkAndActivateInsetVisual(new_cur, right_pos >= pos(), false)) { // we actually move the cursor at the end of this function, for now // we just keep track of the new position in new_cur... LYXERR(Debug::RTL, "entering inset at: " << new_cur.pos()); @@ -968,7 +968,9 @@ void Cursor::setSelection() selection() = true; // A selection with no contents is not a selection // FIXME: doesnt look ok - if (pit() == anchor().pit() && pos() == anchor().pos()) + if (idx() == anchor().idx() && + pit() == anchor().pit() && + pos() == anchor().pos()) selection() = false; } @@ -1903,7 +1905,7 @@ docstring Cursor::selectionAsString(bool with_label) const } -docstring Cursor::currentState() +docstring Cursor::currentState() const { if (inMathed()) { odocstringstream os; @@ -1918,7 +1920,7 @@ docstring Cursor::currentState() } -docstring Cursor::getPossibleLabel() +docstring Cursor::getPossibleLabel() const { return inMathed() ? from_ascii("eq:") : text()->getPossibleLabel(*this); } @@ -1998,7 +2000,6 @@ bool Cursor::fixIfBroken() { if (DocIterator::fixIfBroken()) { clearSelection(); - resetAnchor(); return true; } return false; @@ -2090,8 +2091,7 @@ bool Cursor::textUndo() return false; // Set cursor setCursor(dit); - selection() = false; - resetAnchor(); + clearSelection(); fixIfBroken(); return true; } @@ -2105,50 +2105,61 @@ bool Cursor::textRedo() return false; // Set cursor setCursor(dit); - selection() = false; - resetAnchor(); + clearSelection(); fixIfBroken(); return true; } -void Cursor::finishUndo() +void Cursor::finishUndo() const { bv_->buffer().undo().finishUndo(); } -void Cursor::recordUndo(UndoKind kind, pit_type from, pit_type to) +void Cursor::beginUndoGroup() const +{ + bv_->buffer().undo().beginUndoGroup(); +} + + +void Cursor::endUndoGroup() const +{ + bv_->buffer().undo().endUndoGroup(); +} + + +void Cursor::recordUndo(UndoKind kind, pit_type from, pit_type to) const { bv_->buffer().undo().recordUndo(*this, kind, from, to); } -void Cursor::recordUndo(UndoKind kind, pit_type from) +void Cursor::recordUndo(UndoKind kind, pit_type from) const { bv_->buffer().undo().recordUndo(*this, kind, from); } -void Cursor::recordUndo(UndoKind kind) +void Cursor::recordUndo(UndoKind kind) const { bv_->buffer().undo().recordUndo(*this, kind); } -void Cursor::recordUndoInset(UndoKind kind) +void Cursor::recordUndoInset(UndoKind kind) const { bv_->buffer().undo().recordUndoInset(*this, kind); } -void Cursor::recordUndoFullDocument() +void Cursor::recordUndoFullDocument() const { bv_->buffer().undo().recordUndoFullDocument(*this); } -void Cursor::recordUndoSelection() +void Cursor::recordUndoSelection() const { if (inMathed()) { if (cap::multipleCellsSelected(*this))