]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
Fix bug #7212: Paragraph::forToc has to include the labelString.
[lyx.git] / src / Paragraph.cpp
index 340e6d1f0be848431884b84ed5e69f12c5554328..67965ef4c5950da18f47d9143db248161b87d68b 100644 (file)
@@ -173,6 +173,20 @@ public:
                return result;
        }
 
+       FontSpan const & getRange(pos_type pos) const
+       {
+               /// empty span to indicate mismatch
+               static FontSpan empty_;
+               RangesIterator et = ranges_.end();
+               RangesIterator it = ranges_.begin();
+               for (; it != et; ++it) {
+                       if(it->inside(pos)) {
+                               return it->range();
+                       }
+               }
+               return empty_;
+       }
+
        bool needsRefresh() const {
                return needs_refresh_;
        }
@@ -2825,6 +2839,13 @@ bool Paragraph::isWordSeparator(pos_type pos) const
 }
 
 
+bool Paragraph::isSameSpellRange(pos_type pos1, pos_type pos2) const
+{
+       return pos1 == pos2
+               || d->speller_state_.getRange(pos1) == d->speller_state_.getRange(pos2);
+}
+
+
 bool Paragraph::isChar(pos_type pos) const
 {
        if (Inset const * inset = getInset(pos))
@@ -2940,6 +2961,8 @@ docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
 
 void Paragraph::forToc(docstring & os, size_t maxlen) const
 {
+       if (!d->params_.labelString().empty())
+               os += d->params_.labelString() + ' ';
        for (pos_type i = 0; i < size() && os.length() < maxlen; ++i) {
                if (isDeleted(i))
                        continue;
@@ -3613,6 +3636,11 @@ SpellChecker::Result Paragraph::spellCheck(pos_type & from, pos_type & to,
                                        LYXERR(Debug::GUI, "misspelled word is correct with dot: \"" <<
                                           word << "\" [" <<
                                           from << ".." << to << "]");
+                               } else {
+                                       // spell check with dot appended failed
+                                       // restore original word/lang value
+                                       word = asString(from, to, AS_STR_INSETS | AS_STR_SKIPDELETE);
+                                       wl = WordLangTuple(word, lang);
                                }
                        }
                }