]> git.lyx.org Git - lyx.git/blobdiff - src/MetricsInfo.cpp
Tracking correctly available translations (take 2)
[lyx.git] / src / MetricsInfo.cpp
index 05fc0658b1cc39e5ca35f78bc3e2bd8227f7d6db..e68c18d79d65f4c2c619468032dc7a7e7a5dc78f 100644 (file)
@@ -107,6 +107,16 @@ ColorCode PainterInfo::backgroundColor(Inset const * inset, bool sel) const
 }
 
 
+Color PainterInfo::textColor(Color const & color) const
+{
+       if (change_.changed()) 
+               return change_.color();
+       if (selected)
+               return Color_selectiontext;
+       return color;
+}
+
+
 /////////////////////////////////////////////////////////////////////////
 //
 // ScriptChanger
@@ -235,11 +245,15 @@ FontSetChanger::FontSetChanger(MetricsBase & mb, char const * name,
                save_ = mb;
                FontSize oldsize = save_.font.size();
                ColorCode oldcolor = save_.font.color();
+               docstring const oldname = from_ascii(save_.fontname);
                mb.fontname = name;
                mb.font = sane_font;
                augmentFont(mb.font, from_ascii(name));
                mb.font.setSize(oldsize);
-               mb.font.setColor(oldcolor);
+               if (string(name) != "lyxtex"
+                   && ((isTextFont(oldname) && oldcolor != Color_foreground)
+                       || (isMathFont(oldname) && oldcolor != Color_math)))
+                       mb.font.setColor(oldcolor);
        }
 }
 
@@ -252,11 +266,15 @@ FontSetChanger::FontSetChanger(MetricsBase & mb, docstring const & name,
                save_ = mb;
                FontSize oldsize = save_.font.size();
                ColorCode oldcolor = save_.font.color();
+               docstring const oldname = from_ascii(save_.fontname);
                mb.fontname = to_utf8(name);
                mb.font = sane_font;
                augmentFont(mb.font, name);
                mb.font.setSize(oldsize);
-               mb.font.setColor(oldcolor);
+               if (name != "lyxtex"
+                   && ((isTextFont(oldname) && oldcolor != Color_foreground)
+                       || (isMathFont(oldname) && oldcolor != Color_math)))
+                       mb.font.setColor(oldcolor);
        }
 }
 
@@ -294,17 +312,21 @@ WidthChanger::~WidthChanger()
 //
 /////////////////////////////////////////////////////////////////////////
 
-ColorChanger::ColorChanger(FontInfo & font, string const & color)
-       : Changer<FontInfo, string>(font)
+ColorChanger::ColorChanger(FontInfo & font, ColorCode color,
+                          bool really_change_color)
+       : Changer<FontInfo, ColorCode>(font), change_(really_change_color)
 {
-       save_ = lcolor.getFromLyXName(color);
-       font.setColor(lcolor.getFromLyXName(color));
+       if (change_) {
+               save_ = font.color();
+               font.setColor(color);
+       }
 }
 
 
 ColorChanger::~ColorChanger()
 {
-       orig_.setColor(lcolor.getFromLyXName(save_));
+       if (change_)
+               orig_.setColor(save_);
 }