]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
Set a newly created inset's font/language to the current font/language.
[lyx.git] / src / Paragraph.cpp
index 796abf461764430a8ad30fd09937c1c6f639eed0..8054bb9daaf181b00fc90110da76374f7d37f89c 100644 (file)
@@ -737,7 +737,10 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const & buf,
                     || inset->lyxCode() == Inset::MATH_CODE
                     || inset->lyxCode() == Inset::URL_CODE)
                    && running_font.isRightToLeft()) {
-                       os << "\\L{";
+                       if (running_font.language()->lang() == "farsi")
+                               os << "\\beginL{}";
+                       else
+                               os << "\\L{";
                        close = true;
                }
 
@@ -759,8 +762,12 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const & buf,
 
                int tmp = inset->latex(buf, os, runparams);
 
-               if (close)
-                       os << '}';
+               if (close) {
+                       if (running_font.language()->lang() == "farsi")
+                               os << "\\endL{}";
+                       else
+                               os << '}';
+               }
 
                if (tmp) {
                        for (int j = 0; j < tmp; ++j) {
@@ -1247,7 +1254,19 @@ void Paragraph::insertInset(pos_type pos, Inset * inset,
                            Font const & font, Change const & change)
 {
        pimpl_->insertInset(pos, inset, change);
+       // Set the font/language of the inset...
        setFont(pos, font);
+       // ... as well as the font/language of the text inside the inset
+       // FIXME: This is far from perfect. It basically overrides work being done
+       // in the InsetText constructor. Also, it doesn't work for Tables 
+       // (precisely because each cell's font/language is set in the Table's 
+       // constructor, so by now it's too late). The long-term solution should
+       // be moving current_font into Cursor, and getting rid of all this...
+       // (see http://thread.gmane.org/gmane.editors.lyx.devel/88869/focus=88944)
+       if (inset->asTextInset()) {
+               inset->asTextInset()->text_.current_font = font;
+               inset->asTextInset()->text_.real_current_font = font;
+       }
 }
 
 
@@ -1774,8 +1793,13 @@ int Paragraph::startTeXParParams(BufferParams const & bparams,
                os << "\\noindent ";
                column += 10;
        }
+       
+       LyXAlignment const curAlign = params().align();
 
-       switch (params().align()) {
+       if (curAlign == layout()->align)
+               return column;
+
+       switch (curAlign) {
        case LYX_ALIGN_NONE:
        case LYX_ALIGN_BLOCK:
        case LYX_ALIGN_LAYOUT:
@@ -1791,7 +1815,7 @@ int Paragraph::startTeXParParams(BufferParams const & bparams,
                break;
        }
 
-       switch (params().align()) {
+       switch (curAlign) {
        case LYX_ALIGN_NONE:
        case LYX_ALIGN_BLOCK:
        case LYX_ALIGN_LAYOUT: