]> git.lyx.org Git - lyx.git/commitdiff
Properly reset the stream encoding after an environment. Fixes bug #6216.
authorEnrico Forestieri <forenr@lyx.org>
Wed, 16 Sep 2009 20:50:40 +0000 (20:50 +0000)
committerEnrico Forestieri <forenr@lyx.org>
Wed, 16 Sep 2009 20:50:40 +0000 (20:50 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31392 a592a061-630c-0410-9148-cb99ea01b6c8

src/Paragraph.cpp
src/output_latex.cpp

index decef1348d11646a0ef1356041fce8a6e921ddf5..6ad82dce590f2d5c1dfb654a121debdb2c24c3f6 100644 (file)
@@ -2187,8 +2187,12 @@ bool Paragraph::latex(BufferParams const & bparams,
                return_value = false;
        }
 
-       if (allowcust && d->endTeXParParams(bparams, os, texrow, runparams))
+       if (allowcust && d->endTeXParParams(bparams, os, texrow, runparams)
+           && runparams.encoding != prev_encoding) {
                runparams.encoding = prev_encoding;
+               if (!bparams.useXetex)
+                       os << setEncoding(prev_encoding->iconvName());
+       }
 
        LYXERR(Debug::LATEX, "Paragraph::latex... done " << this);
        return return_value;
index 2f4e765ebacdba2f7f1f0fcbe34b5c9bf53574a6..d40874e041959b60141ff60b235caf823f5bfe80 100644 (file)
@@ -252,14 +252,22 @@ TeXEnvironment(Buffer const & buf,
                os << "\\end{" << from_ascii(style.latexname()) << "}\n";
                texrow.newline();
                prev_env_language_ = par_language;
-               runparams.encoding = prev_encoding;
+               if (runparams.encoding != prev_encoding) {
+                       runparams.encoding = prev_encoding;
+                       if (!bparams.useXetex)
+                               os << setEncoding(prev_encoding->iconvName());
+               }
        }
 
        if (leftindent_open) {
                os << "\\end{LyXParagraphLeftIndent}\n";
                texrow.newline();
                prev_env_language_ = par_language;
-               runparams.encoding = prev_encoding;
+               if (runparams.encoding != prev_encoding) {
+                       runparams.encoding = prev_encoding;
+                       if (!bparams.useXetex)
+                               os << setEncoding(prev_encoding->iconvName());
+               }
        }
 
        if (par != paragraphs.end())
@@ -589,7 +597,11 @@ ParagraphList::const_iterator TeXOnePar(Buffer const & buf,
                os << "\\par}";
        } else if (is_command) {
                os << '}';
-               runparams.encoding = prev_encoding;
+               if (runparams.encoding != prev_encoding) {
+                       runparams.encoding = prev_encoding;
+                       if (!bparams.useXetex)
+                               os << setEncoding(prev_encoding->iconvName());
+               }
        }
 
        bool pending_newline = false;