From: Jean-Marc Lasgouttes Date: Thu, 20 Jun 2024 15:52:19 +0000 (+0200) Subject: Add a constructor of UndoGroupHelper that uses a CursorData parameter X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;ds=sidebyside;h=e7b1ee47eadc35b75862baf6127a5207412bcf36;p=lyx.git Add a constructor of UndoGroupHelper that uses a CursorData parameter This aloows to se the the `before' cursor of the undo group. Not used for now. --- diff --git a/src/Undo.cpp b/src/Undo.cpp index 8dcffff32b..80dff34baa 100644 --- a/src/Undo.cpp +++ b/src/Undo.cpp @@ -704,6 +704,12 @@ UndoGroupHelper::UndoGroupHelper(Buffer * buf) : d(new UndoGroupHelper::Impl) } +UndoGroupHelper::UndoGroupHelper(CursorData & cur) : d(new UndoGroupHelper::Impl) +{ + resetBuffer(cur); +} + + UndoGroupHelper::~UndoGroupHelper() { for (Buffer * buf : d->buffers_) @@ -712,6 +718,7 @@ UndoGroupHelper::~UndoGroupHelper() delete d; } + void UndoGroupHelper::resetBuffer(Buffer * buf) { if (buf && d->buffers_.count(buf) == 0) { @@ -721,4 +728,13 @@ void UndoGroupHelper::resetBuffer(Buffer * buf) } +void UndoGroupHelper::resetBuffer(CursorData & cur) +{ + if (!cur.empty() && d->buffers_.count(cur.buffer()) == 0) { + d->buffers_.insert(cur.buffer()); + cur.buffer()->undo().beginUndoGroup(cur); + } +} + + } // namespace lyx diff --git a/src/Undo.h b/src/Undo.h index b6d84569c5..32be7d2ede 100644 --- a/src/Undo.h +++ b/src/Undo.h @@ -140,12 +140,18 @@ class UndoGroupHelper { public: // Begin a new undo group for buffer \c buf. UndoGroupHelper(Buffer * buf); + // Begin an undo group for the buffer of \c cur with the the + // `before' cursor set to \c cur. + UndoGroupHelper(CursorData & cur); // End all active undo groups. ~UndoGroupHelper(); // Begin if needed an undo group for buffer \c buf. void resetBuffer(Buffer * buf); + // Begin if needed an undo group for the buffer of \c cur with the + // the `before' cursor set to \c cur. + void resetBuffer(CursorData & cur); private: class Impl; Impl * const d;