From: Juergen Spitzmueller Date: Mon, 24 Mar 2014 08:15:00 +0000 (+0100) Subject: In Paragraph::changeCase, correctly track the font of the changed characters (fix... X-Git-Tag: 2.1.1~90^2~11 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=8b60088eaabc967764e75a886141b920cdd8ad34;p=features.git In Paragraph::changeCase, correctly track the font of the changed characters (fix crash) Fixes: #7943 --- diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index d32c0be2f0..ffcb5f2f4b 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -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 > 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; diff --git a/status.21x b/status.21x index ed6bd9555f..4c647a95a4 100644 --- a/status.21x +++ b/status.21x @@ -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