]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetSpecialChar.cpp
Use context-sensitive command termination
[lyx.git] / src / insets / InsetSpecialChar.cpp
index 8671d2b7d01ba16dcfe29002e7885b2e5b35818a..617c7f5331522e268954583207dbee2947da4c3b 100644 (file)
@@ -20,6 +20,7 @@
 #include "Lexer.h"
 #include "MetricsInfo.h"
 #include "output_xhtml.h"
+#include "texstream.h"
 
 #include "frontends/FontMetrics.h"
 #include "frontends/Painter.h"
@@ -128,8 +129,6 @@ void InsetSpecialChar::metrics(MetricsInfo & mi, Dimension & dim) const
        }
        if (dim.wid == 0)
                dim.wid = fm.width(s);
-
-       setDimCache(mi, dim);
 }
 
 
@@ -138,8 +137,10 @@ namespace {
 // helper function: draw text and update x.
 void drawChar(PainterInfo & pi, int & x, int const y, char_type ch)
 {
-       pi.pain.text(x, y, ch, pi.base.font);
-       x += theFontMetrics(pi.base.font).width(ch);
+       FontInfo font = pi.base.font;
+       font.setPaintColor(pi.textColor(font.realColor()));
+       pi.pain.text(x, y, ch, font);
+       x += theFontMetrics(font).width(ch);
 }
 
 
@@ -368,22 +369,23 @@ void InsetSpecialChar::latex(otexstream & os,
                os << "\\-";
                break;
        case LIGATURE_BREAK:
-               os << "\\textcompwordmark{}";
+               os << "\\textcompwordmark" << termcmd;
                break;
        case END_OF_SENTENCE:
                os << "\\@.";
                break;
        case LDOTS:
-               os << "\\ldots{}";
+               os << "\\ldots" << termcmd;
                break;
        case MENU_SEPARATOR:
                if (rp.local_font->isRightToLeft())
-                       os << "\\lyxarrow*{}";
+                       os << "\\lyxarrow*";
                else
-                       os << "\\lyxarrow{}";
+                       os << "\\lyxarrow";
+               os << termcmd;
                break;
        case SLASH:
-               os << "\\slash{}";
+               os << "\\slash" << termcmd;
                break;
        case NOBREAKDASH:
                if (rp.moving_arg)
@@ -393,22 +395,22 @@ void InsetSpecialChar::latex(otexstream & os,
        case PHRASE_LYX:
                if (rp.moving_arg)
                        os << "\\protect";
-               os << "\\LyX{}";
+               os << "\\LyX" << termcmd;
                break;
        case PHRASE_TEX:
                if (rp.moving_arg)
                        os << "\\protect";
-               os << "\\TeX{}";
+               os << "\\TeX" << termcmd;
                break;
        case PHRASE_LATEX2E:
                if (rp.moving_arg)
                        os << "\\protect";
-               os << "\\LaTeXe{}";
+               os << "\\LaTeXe" << termcmd;
                break;
        case PHRASE_LATEX:
                if (rp.moving_arg)
                        os << "\\protect";
-               os << "\\LaTeX{}";
+               os << "\\LaTeX" << termcmd;
                break;
        }
 }