]> git.lyx.org Git - features.git/commitdiff
#7564 make the move forward to next match after text replacement optional and suppres...
authorStephan Witt <switt@lyx.org>
Thu, 19 May 2011 19:11:01 +0000 (19:11 +0000)
committerStephan Witt <switt@lyx.org>
Thu, 19 May 2011 19:11:01 +0000 (19:11 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_2_0_X@38790 a592a061-630c-0410-9148-cb99ea01b6c8

src/LyXAction.cpp
src/frontends/qt4/Menus.cpp
src/lyxfind.cpp
src/lyxfind.h
status.20x

index 34693a41282662d13db57337ac3709b413ed7138..f9ee2f8730a239c2551c61ec7b940cc0026e340d 100644 (file)
@@ -863,7 +863,7 @@ void LyXAction::init()
  * \li Params: <DATA>: data is of the form
                        "<replace> \n
                         <search> \n
-                        <casesensitive> <matchword> <all> <forward>"
+                        <casesensitive> <matchword> <all> <forward> <findnext>"
  * \li Origin: Andre, Jan 7 2004
  * \endvar
  */
index c59c68999c1254af2ffdf3162ad26636586fa420..6af599be588bd2db1f416e92837838063a9379c4 100644 (file)
@@ -788,8 +788,8 @@ void MenuDefinition::expandSpellingSuggestions(BufferView const * bv)
                                        LYXERR(Debug::GUI, suggestion);
                                        MenuItem w(MenuItem::Command, toqstr(suggestion),
                                                FuncRequest(LFUN_WORD_REPLACE, 
-                                                       replace2string(suggestion,selection,
-                                                               true, true, false, false)));
+                                                       replace2string(suggestion, selection,
+                                                               true, true, false, true, false)));
                                        if (i < m)
                                                add(w);
                                        else
index a15ec587f9a3dc3380b997cb527d5ff82b2a16d7..158a2705aea27e0b8faa5724784f5989cd947383 100644 (file)
@@ -229,7 +229,7 @@ int replaceAll(BufferView * bv,
 // whether anything at all was done.
 pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
            docstring const & replacestr, bool case_sens, 
-                       bool whole, bool forward)
+                       bool whole, bool forward, bool findnext)
 {
        Cursor & cur = bv->cursor();
        if (!cur.selection()) {
@@ -278,7 +278,8 @@ pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
                cur.pos() -= replacestr.length();
                LASSERT(cur.pos() >= 0, /* */);
        }
-       findOne(bv, searchstr, case_sens, whole, forward, false);
+       if (findnext)
+               findOne(bv, searchstr, case_sens, whole, forward, false);
 
        return pair<bool, int>(true, 1);
 }
@@ -300,7 +301,7 @@ docstring const find2string(docstring const & search,
 
 docstring const replace2string(docstring const & replace,
        docstring const & search, bool casesensitive, bool matchword,
-       bool all, bool forward)
+       bool all, bool forward, bool findnext)
 {
        odocstringstream ss;
        ss << replace << '\n'
@@ -308,7 +309,8 @@ docstring const replace2string(docstring const & replace,
           << int(casesensitive) << ' '
           << int(matchword) << ' '
           << int(all) << ' '
-          << int(forward);
+          << int(forward) << ' '
+          << int(findnext);
        return ss.str();
 }
 
@@ -343,7 +345,7 @@ bool lyxreplace(BufferView * bv,
        // data is of the form
        // "<search>
        //  <replace>
-       //  <casesensitive> <matchword> <all> <forward>"
+       //  <casesensitive> <matchword> <all> <forward> <findnext>"
        docstring search;
        docstring rplc;
        docstring howto = split(ev.argument(), rplc, '\n');
@@ -353,6 +355,7 @@ bool lyxreplace(BufferView * bv,
        bool matchword     = parse_bool(howto);
        bool all           = parse_bool(howto);
        bool forward       = parse_bool(howto);
+       bool findnext      = howto.empty() ? true : parse_bool(howto);
 
        int replace_count = 0;
        bool update = false;
@@ -363,7 +366,7 @@ bool lyxreplace(BufferView * bv,
                        update = replace_count > 0;
                } else {
                        pair<bool, int> rv = 
-                               replaceOne(bv, search, rplc, casesensitive, matchword, forward);
+                               replaceOne(bv, search, rplc, casesensitive, matchword, forward, findnext);
                        update = rv.first;
                        replace_count = rv.second;
                }
@@ -383,7 +386,7 @@ bool lyxreplace(BufferView * bv,
                                buf.message(str);
                        }
                }
-       } else {
+       } else if (findnext) {
                // if we have deleted characters, we do not replace at all, but
                // rather search for the next occurence
                if (findOne(bv, search, casesensitive, matchword, forward))
index da632bf1a3df9e428baf6d185160fe941273f1bb..589a5d01d5870177a2e9a42cdfe477d42f506192 100644 (file)
@@ -48,7 +48,8 @@ docstring const replace2string(docstring const & replace,
                                 bool casesensitive,
                                 bool matchword,
                                 bool all,
-                                bool forward);
+                                bool forward,
+                                bool findnext = true);
 
 /** Parse the string encoding of the find request that is found in
  *  \c ev.argument and act on it.
index d753533184916eb1d10fe2c5e07e257e7ae15559..f3f1e51037877fe0fa76e86ab30f67cb936d6aa9 100644 (file)
@@ -112,6 +112,8 @@ What's new
 - Make size of characters in instant preview snippets independent of the
   LaTeX font size (bug 2200).
 
+- Fix On-the-fly spellchecker jumps to next pattern match when replacing a
+  misspelled word with a suggested one from context menu (#7564).
 
 * DOCUMENTATION AND LOCALIZATION