]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfind.cpp
speed up _a_lot_ switchEncoding() by avoiding an object copy
[lyx.git] / src / lyxfind.cpp
index 043f02cde2caeb80ee699dbfe45cda7e87588567..00bc9d51def3f9f1de0699839ef86cdf9979c61a 100644 (file)
@@ -22,9 +22,7 @@
 #include "buffer_funcs.h"
 #include "BufferView.h"
 #include "Changes.h"
-#include "support/debug.h"
 #include "FuncRequest.h"
-#include "support/gettext.h"
 #include "Text.h"
 #include "Paragraph.h"
 #include "ParIterator.h"
@@ -32,7 +30,9 @@
 #include "frontends/alert.h"
 
 #include "support/convert.h"
+#include "support/debug.h"
 #include "support/docstream.h"
+#include "support/gettext.h"
 #include "support/lstrings.h"
 
 using namespace std;
@@ -148,19 +148,19 @@ int replaceAll(BufferView * bv,
        if (!searchAllowed(bv, searchstr) || buf.isReadonly())
                return 0;
 
-       bv->cursor().recordUndoFullDocument();
-
        MatchString const match(searchstr, cs, mw);
        int num = 0;
 
        int const rsize = replacestr.size();
        int const ssize = searchstr.size();
 
-       DocIterator cur = doc_iterator_begin(buf.inset());
+       Cursor cur(*bv);
+       cur.setCursor(doc_iterator_begin(buf.inset()));
        while (findForward(cur, match, false)) {
                pos_type pos = cur.pos();
                Font const font
                        = cur.paragraph().getFontSettings(buf.params(), pos);
+               cur.recordUndo();
                int striked = ssize - cur.paragraph().eraseChars(pos, pos + ssize,
                                                            buf.params().trackChanges);
                cur.paragraph().insert(pos, replacestr, font,