]> git.lyx.org Git - features.git/commitdiff
In Paragraph::changeCase, correctly track the font of the changed characters (fix...
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 24 Mar 2014 08:15:00 +0000 (09:15 +0100)
committerRichard Heck <rgheck@lyx.org>
Fri, 18 Apr 2014 14:52:47 +0000 (10:52 -0400)
Fixes: #7943
src/Paragraph.cpp
status.21x

index d32c0be2f0ba95d1ddc315f10f4a4ef741c93d11..ffcb5f2f4bdeb8608875cace442b5faf2dbeeffd 100644 (file)
@@ -3670,7 +3670,9 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
        // process sequences of modified characters; in change
        // tracking mode, this approach results in much better
        // usability than changing case on a char-by-char basis
-       docstring changes;
+       // We also need to track the current font, since font
+       // changes within sequences can occur.
+       vector<pair<char_type, Font> > changes;
 
        bool const trackChanges = bparams.trackChanges;
 
@@ -3704,7 +3706,7 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
                }
 
                if (oldChar != newChar) {
-                       changes += newChar;
+                       changes.push_back(make_pair(newChar, getFontSettings(bparams, pos)));
                        if (pos != right - 1)
                                continue;
                        // step behind the changing area
@@ -3713,9 +3715,8 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
 
                int erasePos = pos - changes.size();
                for (size_t i = 0; i < changes.size(); i++) {
-                       insertChar(pos, changes[i],
-                                  getFontSettings(bparams,
-                                                  erasePos),
+                       insertChar(pos, changes[i].first,
+                                  changes[i].second,
                                   trackChanges);
                        if (!eraseChar(erasePos, trackChanges)) {
                                ++erasePos;
index ed6bd9555fece2b4902f57dc1f7905896162cf1e..4c647a95a40ba149206deae32bdaeb06f0ef2ca0 100644 (file)
@@ -65,6 +65,9 @@ What's new
 
 - Fix crash when CheckTeX hits mathed (bug 8798).
 
+- Fix crash when performing "Change Case" operation on a selection with font
+  changes (bug 7943).
+
 - Fix assertion when entering a path into the import dialog (bug 7437).
 
 - Failed instant preview compilation now returns an error. And a red box is