]> git.lyx.org Git - lyx.git/commitdiff
Bugfix in how the search buffer was exported for the Advanced Find & Replace.
authorTommaso Cucinotta <tommaso@lyx.org>
Thu, 26 May 2011 17:08:48 +0000 (17:08 +0000)
committerTommaso Cucinotta <tommaso@lyx.org>
Thu, 26 May 2011 17:08:48 +0000 (17:08 +0000)
For example, before this footnotes were not correctly found.
Added also accompanying regression test.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38846 a592a061-630c-0410-9148-cb99ea01b6c8

development/autotests/findadv-13-in.txt [new file with mode: 0644]
src/lyxfind.cpp

diff --git a/development/autotests/findadv-13-in.txt b/development/autotests/findadv-13-in.txt
new file mode 100644 (file)
index 0000000..701d23c
--- /dev/null
@@ -0,0 +1,15 @@
+# Finding footnotes
+#
+Lang it_IT.utf8
+TestBegin test.lyx -dbg find > lyx-log.txt 2>&1
+KK: \Axfootnote-insert\[Return]
+# Work around a little UI bug/non-determinism in cursor position after LFUN
+KK: \C\[Home]\[Right]
+KK: foo\C\[Home]
+KK: \CF
+KK: \Axfootnote-insert\[Return]
+# Work around a little UI bug/non-determinism in cursor position after LFUN
+KK: \C\[Home]\[Right]
+KK: foo\[Return]
+TestEnd
+Assert pcregrep -M 'Putting selection at .*idx: 0 par: 0 pos: 0\n with len: 1' lyx-log.txt
index 62b0b1c29ac1f14d86ece5020a9583eb6e2aa0ab..1aa228b4a56c83c53634574e052b982d95c4447e 100644 (file)
@@ -743,21 +743,19 @@ static docstring stringifySearchBuffer(Buffer & buffer, FindAndReplaceOptions co
        if (!opt.ignoreformat) {
                str = buffer_to_latex(buffer);
        } else {
-               ParIterator it = buffer.par_iterator_begin();
-               ParIterator end = buffer.par_iterator_end();
                OutputParams runparams(&buffer.params().encoding());
-               odocstringstream os;
                runparams.nice = true;
                runparams.flavor = OutputParams::LATEX;
                runparams.linelen = 100000; //lyxrc.plaintext_linelen;
                runparams.dryrun = true;
-               for (; it != end; ++it) {
+               for (pos_type pit = pos_type(0); pit < (pos_type)buffer.paragraphs().size(); ++pit) {
+                       Paragraph const & par = buffer.paragraphs().at(pit);
                        LYXERR(Debug::FIND, "Adding to search string: '"
-                               << it->asString(false)
+                               << par.stringify(pos_type(0), par.size(),
+                                                AS_STR_INSETS, runparams)
                                << "'");
-                       str +=
-                               it->stringify(pos_type(0), it->size(),
-                                             AS_STR_INSETS, runparams);
+                       str += par.stringify(pos_type(0), par.size(),
+                                            AS_STR_INSETS, runparams);
                }
        }
        return str;