Author: tommaso
Date: Thu May 26 19:08:48 2011
New Revision: 38846
URL: http://www.lyx.org/trac/changeset/38846

Log:
Bugfix in how the search buffer was exported for the Advanced Find & Replace.
For example, before this footnotes were not correctly found.
Added also accompanying regression test.

Added:
   lyx-devel/trunk/development/autotests/findadv-13-in.txt
Modified:
   lyx-devel/trunk/src/lyxfind.cpp

Added: lyx-devel/trunk/development/autotests/findadv-13-in.txt
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ lyx-devel/trunk/development/autotests/findadv-13-in.txt     Thu May 26 
19:08:48 2011        (r38846)
@@ -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

Modified: lyx-devel/trunk/src/lyxfind.cpp
==============================================================================
--- lyx-devel/trunk/src/lyxfind.cpp     Thu May 26 18:54:51 2011        (r38845)
+++ lyx-devel/trunk/src/lyxfind.cpp     Thu May 26 19:08:48 2011        (r38846)
@@ -743,21 +743,19 @@
        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;

Reply via email to