]> git.lyx.org Git - features.git/commitdiff
#7084 provide spelling suggestions only when replacement is possible - if there is...
authorStephan Witt <switt@lyx.org>
Sat, 11 Dec 2010 19:10:44 +0000 (19:10 +0000)
committerStephan Witt <switt@lyx.org>
Sat, 11 Dec 2010 19:10:44 +0000 (19:10 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36834 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/Menus.cpp

index a6033b1c20ed84e9ad1efa6d71567d4cfc079e13..89f67e21a64bd3e0f69c416bd0bfa484767137e6 100644 (file)
@@ -44,6 +44,7 @@
 #include "LyXAction.h"
 #include "LyX.h"
 #include "LyXRC.h"
+#include "lyxfind.h"
 #include "Paragraph.h"
 #include "ParIterator.h"
 #include "Session.h"
@@ -748,35 +749,41 @@ void MenuDefinition::expandSpellingSuggestions(BufferView const * bv)
        docstring_list suggestions;
        pos_type from = bv->cursor().pos();
        pos_type to = from;
-       Paragraph const & par = bv->cursor().paragraph();
+       Cursor const & cur = bv->cursor();
+       Paragraph const & par = cur.paragraph();
        SpellChecker::Result res = par.spellCheck(from, to, wl, suggestions, true, true);
        switch (res) {
        case SpellChecker::UNKNOWN_WORD:
                if (lyxrc.spellcheck_continuously) {
                        LYXERR(Debug::GUI, "Misspelled Word! Suggested Words = ");
-                       size_t i = 0;
-                       size_t m = 10; // first submenu index
-                       MenuItem item(MenuItem::Submenu, qt_("More Spelling Suggestions"));
-                       item.setSubmenu(MenuDefinition(qt_("More Spelling Suggestions")));
-                       for (; i != suggestions.size(); ++i) {
-                               docstring const & suggestion = suggestions[i];
-                               LYXERR(Debug::GUI, suggestion);
-                               MenuItem w(MenuItem::Command, toqstr(suggestion),
-                                       FuncRequest(LFUN_WORD_REPLACE, suggestion));
-                               if (i < m)
-                                       add(w);
-                               else
-                                       item.submenu().add(w);
+                       docstring const & selection = cur.selectionAsString(false);
+                       if (!cur.selection() || selection == wl.word()) {
+                               size_t i = 0;
+                               size_t m = 10; // first submenu index
+                               MenuItem item(MenuItem::Submenu, qt_("More Spelling Suggestions"));
+                               item.setSubmenu(MenuDefinition(qt_("More Spelling Suggestions")));
+                               for (; i != suggestions.size(); ++i) {
+                                       docstring const & suggestion = suggestions[i];
+                                       LYXERR(Debug::GUI, suggestion);
+                                       MenuItem w(MenuItem::Command, toqstr(suggestion),
+                                               FuncRequest(LFUN_WORD_REPLACE, 
+                                                       replace2string(suggestion,selection,
+                                                               true, true, false, false)));
+                                       if (i < m)
+                                               add(w);
+                                       else
+                                               item.submenu().add(w);
+                               }
+                               if (i > m)
+                                       add(item);
+                               if (i > 0)
+                                       add(MenuItem(MenuItem::Separator));
+                               docstring const arg = wl.word() + " " + from_ascii(wl.lang()->lang());
+                               add(MenuItem(MenuItem::Command, qt_("Add to personal dictionary|n"),
+                                               FuncRequest(LFUN_SPELLING_ADD, arg)));
+                               add(MenuItem(MenuItem::Command, qt_("Ignore all|I"),
+                                               FuncRequest(LFUN_SPELLING_IGNORE, arg)));
                        }
-                       if (i > m)
-                               add(item);
-                       if (i > 0)
-                               add(MenuItem(MenuItem::Separator));
-                       docstring const arg = wl.word() + " " + from_ascii(wl.lang()->lang());
-                       add(MenuItem(MenuItem::Command, qt_("Add to personal dictionary|n"),
-                                       FuncRequest(LFUN_SPELLING_ADD, arg)));
-                       add(MenuItem(MenuItem::Command, qt_("Ignore all|I"),
-                                       FuncRequest(LFUN_SPELLING_IGNORE, arg)));
                }
                break;
        case SpellChecker::LEARNED_WORD: {