]> git.lyx.org Git - features.git/commitdiff
Index: src/mathed/InsetMathHull.cpp
authorEnrico Forestieri <forenr@lyx.org>
Wed, 28 Apr 2010 01:40:11 +0000 (01:40 +0000)
committerEnrico Forestieri <forenr@lyx.org>
Wed, 28 Apr 2010 01:40:11 +0000 (01:40 +0000)
===================================================================
--- src/mathed/InsetMathHull.cpp (revisione 34304)
+++ src/mathed/InsetMathHull.cpp (copia locale)
@@ -328,6 +328,23 @@ docstring InsetMathHull::standardFont()
 }

+docstring InsetMathHull::standardColor() const
+{
+ docstring color;
+ switch (type_) {
+ case hullRegexp:
+ color = from_ascii("foreground");
+ break;
+ case hullNone:
+ color = from_ascii("foreground");
+ break;
+ default:
+ color = from_ascii("math");
+ }
+ return color;
+}
+
+
 bool InsetMathHull::previewState(BufferView * bv) const
 {
  if (!editing(bv) && RenderPreview::status() == LyXRC::PREVIEW_ON) {
@@ -417,8 +434,11 @@ void InsetMathHull::draw(PainterInfo & p
  return;
  }

+ bool const really_change_color = pi.base.font.color() == Color_none;
+ ColorChanger dummy0(pi.base.font, standardColor(), really_change_color);
  FontSetChanger dummy1(pi.base, standardFont());
  StyleChanger dummy2(pi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
+
  InsetMathGrid::draw(pi, x + 1, y);

  if (numberedType()) {
Index: src/mathed/MathSupport.cpp
===================================================================
--- src/mathed/MathSupport.cpp (revisione 34311)
+++ src/mathed/MathSupport.cpp (copia locale)
@@ -653,6 +653,13 @@ bool isMathFont(docstring const & name)
 }

+bool isTextFont(docstring const & name)
+{
+ fontinfo * f = lookupFont(name);
+ return f && f->color_ == Color_foreground;
+}
+
+
 FontInfo getFont(docstring const & name)
 {
  FontInfo font;
Index: src/mathed/MathSupport.h
===================================================================
--- src/mathed/MathSupport.h (revisione 34311)
+++ src/mathed/MathSupport.h (copia locale)
@@ -51,6 +51,8 @@ bool isFontName(docstring const & name);

 bool isMathFont(docstring const & name);

+bool isTextFont(docstring const & name);
+
 // converts single cell to string
 docstring asString(MathData const & ar);
 // converts single inset to string
Index: src/mathed/InsetMathHull.h
===================================================================
--- src/mathed/InsetMathHull.h (revisione 34304)
+++ src/mathed/InsetMathHull.h (copia locale)
@@ -197,6 +197,8 @@ private:
  void changeCols(col_type);
  ///
  docstring standardFont() const;
+ ///
+ docstring standardColor() const;
  /// consistency check
  void check() const;
  /// can this change its number of rows?
Index: src/MetricsInfo.cpp
===================================================================
--- src/MetricsInfo.cpp (revisione 34312)
+++ src/MetricsInfo.cpp (copia locale)
@@ -235,11 +235,15 @@ FontSetChanger::FontSetChanger(MetricsBa
  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 +256,15 @@ FontSetChanger::FontSetChanger(MetricsBa
  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 +302,21 @@ WidthChanger::~WidthChanger()
 //
 /////////////////////////////////////////////////////////////////////////

-ColorChanger::ColorChanger(FontInfo & font, string const & color)
- : Changer<FontInfo, string>(font)
+ColorChanger::ColorChanger(FontInfo & font, docstring const & 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(lcolor.getFromLyXName(to_utf8(color)));
+ }
 }

 ColorChanger::~ColorChanger()
 {
- orig_.setColor(lcolor.getFromLyXName(save_));
+ if (change_)
+ orig_.setColor(save_);
 }

Index: src/MetricsInfo.h
===================================================================
--- src/MetricsInfo.h (revisione 34312)
+++ src/MetricsInfo.h (copia locale)
@@ -222,12 +222,16 @@ public:

 // temporarily change the used color
-class ColorChanger : public Changer<FontInfo, std::string> {
+class ColorChanger : public Changer<FontInfo, ColorCode> {
 public:
  ///
- ColorChanger(FontInfo & font, std::string const & color);
+ ColorChanger(FontInfo & font, docstring const & color,
+      bool really_change_color = true);
  ///
  ~ColorChanger();
+private:
+ ///
+ bool change_;
 };

 } // namespace lyx

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34320 a592a061-630c-0410-9148-cb99ea01b6c8

src/MetricsInfo.cpp
src/MetricsInfo.h
src/mathed/InsetMathHull.cpp
src/mathed/InsetMathHull.h
src/mathed/MathSupport.cpp
src/mathed/MathSupport.h

index 05fc0658b1cc39e5ca35f78bc3e2bd8227f7d6db..6d701c75ac1354c15cb0eafaac86d5aced3d1f00 100644 (file)
@@ -235,11 +235,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 +256,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 +302,21 @@ WidthChanger::~WidthChanger()
 //
 /////////////////////////////////////////////////////////////////////////
 
-ColorChanger::ColorChanger(FontInfo & font, string const & color)
-       : Changer<FontInfo, string>(font)
+ColorChanger::ColorChanger(FontInfo & font, docstring const & 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(lcolor.getFromLyXName(to_utf8(color)));
+       }
 }
 
 
 ColorChanger::~ColorChanger()
 {
-       orig_.setColor(lcolor.getFromLyXName(save_));
+       if (change_)
+               orig_.setColor(save_);
 }
 
 
index 6297c7b4a0e2f193d6a35ff5ced339b9b5fd0cf8..020b97ec1793be9035d224d02de1cf7e9218f3d9 100644 (file)
@@ -222,12 +222,16 @@ public:
 
 
 // temporarily change the used color
-class ColorChanger : public Changer<FontInfo, std::string> {
+class ColorChanger : public Changer<FontInfo, ColorCode> {
 public:
        ///
-       ColorChanger(FontInfo & font, std::string const & color);
+       ColorChanger(FontInfo & font, docstring const & color,
+                    bool really_change_color = true);
        ///
        ~ColorChanger();
+private:
+       ///
+       bool change_;
 };
 
 } // namespace lyx
index e4c68cb951e20d13e30acc8b1981349270648a24..ff4eecd2daa34843708a1b6e13cc98cf7d4a0b99 100644 (file)
@@ -328,6 +328,23 @@ docstring InsetMathHull::standardFont() const
 }
 
 
+docstring InsetMathHull::standardColor() const
+{
+       docstring color;
+       switch (type_) {
+       case hullRegexp:
+               color = from_ascii("foreground");
+               break;
+       case hullNone:
+               color = from_ascii("foreground");
+               break;
+       default:
+               color = from_ascii("math");
+       }
+       return color;
+}
+
+
 bool InsetMathHull::previewState(BufferView * bv) const
 {
        if (!editing(bv) && RenderPreview::status() == LyXRC::PREVIEW_ON) {
@@ -417,8 +434,11 @@ void InsetMathHull::draw(PainterInfo & pi, int x, int y) const
                return;
        }
 
+       bool const really_change_color = pi.base.font.color() == Color_none;
+       ColorChanger dummy0(pi.base.font, standardColor(), really_change_color);
        FontSetChanger dummy1(pi.base, standardFont());
        StyleChanger dummy2(pi.base, display() ? LM_ST_DISPLAY : LM_ST_TEXT);
+
        InsetMathGrid::draw(pi, x + 1, y);
 
        if (numberedType()) {
index 34b0fab04ac96c9b950998ef36f30a6101755bc8..e6230b9b528218085a9f03e02ed6678aa754cd81 100644 (file)
@@ -197,6 +197,8 @@ private:
        void changeCols(col_type);
        ///
        docstring standardFont() const;
+       ///
+       docstring standardColor() const;
        /// consistency check
        void check() const;
        /// can this change its number of rows?
index 7dc8bafa0596cc2d17e1c7d00ebdf701f6a675d6..309d28ed9f38e63b425166615200af68f1f2da86 100644 (file)
@@ -653,6 +653,13 @@ bool isMathFont(docstring const & name)
 }
 
 
+bool isTextFont(docstring const & name)
+{
+       fontinfo * f = lookupFont(name);
+       return f && f->color_ == Color_foreground;
+}
+
+
 FontInfo getFont(docstring const & name)
 {
        FontInfo font;
index 42d0977be12b2203277e360afb376f545bebed31..04bcffb93141232ef3e0b64417e5ab687e44bc81 100644 (file)
@@ -51,6 +51,8 @@ bool isFontName(docstring const & name);
 
 bool isMathFont(docstring const & name);
 
+bool isTextFont(docstring const & name);
+
 // converts single cell to string
 docstring asString(MathData const & ar);
 // converts single inset to string