commit 04ba887e2c7748c2bd2d244fa2e6aa46780318c7
Author: Juergen Spitzmueller <[email protected]>
Date:   Sat Aug 15 07:06:20 2020 +0200

    Correctly re-set font before and after non-multipar inset
---
 src/Paragraph.cpp |   39 +++++++++++++++++++++++----------------
 1 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp
index 92f6ea1..7fd7eeb 100644
--- a/src/Paragraph.cpp
+++ b/src/Paragraph.cpp
@@ -1060,18 +1060,6 @@ void Paragraph::Private::latexInset(BufferParams const & 
bparams,
                        lang_closed = count > 0;
                        lang_switched_at_inset = prev_font.language() != 
running_font.language();
                }
-               // Now re-do font changes in a way needed here
-               // (using switches with multi-par insets)
-               InsetText const * textinset = inset->asInsetText();
-               bool const cprotect = textinset
-                       ? textinset->hasCProtectContent(runparams.moving_arg)
-                         && !textinset->text().isMainText()
-                       : false;
-               unsigned int count2 = running_font.latexWriteStartChanges(os, 
bparams,
-                                                     runparams, basefont,
-                                                     running_font, true,
-                                                     cprotect);
-               column += count2;
                // Update the running_font, making sure, however,
                // to leave the language as it was.
                // FIXME: probably a better way to keep track of the old
@@ -1086,6 +1074,18 @@ void Paragraph::Private::latexInset(BufferParams const & 
bparams,
                basefont.fontInfo().setSize(copy_font.fontInfo().size());
                basefont.fontInfo().setFamily(copy_font.fontInfo().family());
                basefont.fontInfo().setSeries(copy_font.fontInfo().series());
+               // Now re-do font changes in a way needed here
+               // (using switches with multi-par insets)
+               InsetText const * textinset = inset->asInsetText();
+               bool const cprotect = textinset
+                       ? textinset->hasCProtectContent(runparams.moving_arg)
+                         && !textinset->text().isMainText()
+                       : false;
+               unsigned int count2 = basefont.latexWriteStartChanges(os, 
bparams,
+                                                     runparams, running_font,
+                                                     basefont, true,
+                                                     cprotect);
+               column += count2;
                if (count2 == 0 && (lang_closed || lang_switched_at_inset))
                        // All fonts closed
                        open_font = false;
@@ -2785,16 +2785,23 @@ void Paragraph::latex(BufferParams const & bparams,
                                                incremented = true;
                                        }
                                }
-                               // We need to restore these after insets with
+                               // We need to restore parts of this after 
insets with
                                // allowMultiPar() true
-                               Font const save_running_font = running_font;
                                Font const save_basefont = basefont;
                                d->latexInset(bparams, os, rp, running_font,
                                                basefont, real_outerfont, 
open_font,
                                                runningChange, style, i, 
column);
                                if (multipar_inset) {
-                                       running_font = save_running_font;
-                                       basefont = save_basefont;
+                                       if (open_font) {
+                                               bool needPar = false;
+                                               column += 
running_font.latexWriteEndChanges(
+                                                       os, bparams, runparams,
+                                                       basefont, basefont, 
needPar);
+                                               open_font = false;
+                                       }
+                                       
basefont.fontInfo().setSize(save_basefont.fontInfo().size());
+                                       
basefont.fontInfo().setFamily(save_basefont.fontInfo().family());
+                                       
basefont.fontInfo().setSeries(save_basefont.fontInfo().series());
                                }
                                if (incremented)
                                        --parInline;
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to