]> git.lyx.org Git - lyx.git/blobdiff - src/Text.cpp
Revert previous commit, which committed too much.
[lyx.git] / src / Text.cpp
index 25f58d55dd89a1915e6a6592b12da989f90f8d7e..fad29a745972b674fe267c101bf58319f249fc22 100644 (file)
@@ -1641,7 +1641,17 @@ bool Text::dissolveInset(Cursor & cur)
        spit += cur.pit();
        Buffer & b = *cur.buffer();
        cur.paragraph().eraseChar(cur.pos(), b.params().trackChanges);
+
        if (!plist.empty()) {
+               // see bug 7319
+               // we clear the cache so that we won't get conflicts with labels
+               // that get pasted into the buffer. we should update this before
+               // its being empty matters. if not (i.e., if we encounter bugs),
+               // then this should instead be:
+               //        cur.buffer().updateBuffer();
+               // but we'll try the cheaper solution here.
+               cur.buffer()->clearReferenceCache();
+
                // ERT paragraphs have the Language latex_language.
                // This is invalid outside of ERT, so we need to
                // change it to the buffer language.
@@ -1655,8 +1665,9 @@ bool Text::dissolveInset(Cursor & cur)
                // restore position
                cur.pit() = min(cur.lastpit(), spit);
                cur.pos() = min(cur.lastpos(), spos);
-       } else
-               cur.forceBufferUpdate();
+       }
+
+       cur.forceBufferUpdate();
 
        // Ensure the current language is set correctly (bug 6292)
        cur.text()->setCursor(cur, cur.pit(), cur.pos());
@@ -1897,8 +1908,6 @@ docstring Text::getPossibleLabel(Cursor const & cur) const
        }
 
        if (!name.empty())
-               // FIXME refstyle
-               // We should allow customization of the separator or else change it
                text = name + ':' + text;
 
        return text;
@@ -1923,6 +1932,15 @@ docstring Text::asString(pit_type beg, pit_type end, int options) const
 }
 
 
+void Text::forToc(docstring & os, size_t maxlen, bool shorten) const
+{
+       LASSERT(maxlen > 10, maxlen = 30);
+       for (size_t i = 0; i != pars_.size() && os.length() < maxlen; ++i)
+               pars_[i].forToc(os, maxlen);
+       if (shorten && os.length() >= maxlen)
+               os = os.substr(0, maxlen - 3) + from_ascii("...");
+}
+
 
 void Text::charsTranspose(Cursor & cur)
 {