]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
Fix a crash when closing tabs
[lyx.git] / src / Paragraph.cpp
index 7b0120ab87bbe44e051690e31a97dd45b93a1a21..22dcdb68ac8cb614ed59dc6e7b281f8438c84750 100644 (file)
@@ -2515,7 +2515,9 @@ void Paragraph::latex(BufferParams const & bparams,
        // Do we have an open font change?
        bool open_font = false;
 
-       Change runningChange = Change(Change::UNCHANGED);
+       Change runningChange =
+           runparams.inDeletedInset && !inInset().canTrackChanges()
+           ? runparams.changeOfDeletedInset : Change(Change::UNCHANGED);
 
        Encoding const * const prev_encoding = runparams.encoding;
 
@@ -3050,8 +3052,9 @@ void Paragraph::latex(BufferParams const & bparams,
                os << "{\\" << font.latexSize() << "\\par}";
        }
 
-       column += Changes::latexMarkChange(os, bparams, runningChange,
-                                          Change(Change::UNCHANGED), runparams);
+       if (!runparams.inDeletedInset || inInset().canTrackChanges())
+               column += Changes::latexMarkChange(os, bparams, runningChange,
+                                       Change(Change::UNCHANGED), runparams);
 
        // Needed if there is an optional argument but no contents.
        if (body_pos > 0 && body_pos == size()) {
@@ -4502,10 +4505,12 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
                                break;
                        odocstringstream os;
                        inset->toString(os);
-                       if (!os.str().empty()) {
-                               int const insetstringsize = os.str().length();
+                       docstring const insetstring = os.str();
+                       if (!insetstring.empty()) {
+                               int const insetstringsize = insetstring.length();
                                for (int j = 0; j < insetstringsize && pos < parsize; ++i, ++j) {
-                                       if (str[i] != os.str()[j]) {
+                                       if ((cs && str[i] != insetstring[j])
+                                           || (!cs && uppercase(str[i]) != uppercase(insetstring[j]))) {
                                                nonmatch = true;
                                                break;
                                        }