]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/ColorCache.cpp
Make the InsetInfo dialog a bit less esoteric.
[lyx.git] / src / frontends / qt4 / ColorCache.cpp
index 66b10c1df97cc2bf625acc0565946e116152a866..6036099e473e051e6c52e4edf0f4eba5ade98135 100644 (file)
@@ -18,8 +18,6 @@
 namespace lyx {
 
 namespace{
-// FIXME (later): Qt >= 4.4 has a proper QPalette::NoRole value.
-QPalette::ColorRole const NoRole = static_cast<QPalette::ColorRole>(-1);
 
 QPalette::ColorRole role(ColorCode col)
 {
@@ -33,7 +31,7 @@ QPalette::ColorRole role(ColorCode col)
        case Color_mathcorners:
                return QPalette::Base;
                break;
-                               
+
        case Color_foreground:
        case Color_cursor:
        case Color_preview:
@@ -41,19 +39,22 @@ QPalette::ColorRole role(ColorCode col)
        case Color_previewframe:
                return QPalette::Text;
                break;
-                               
+
        case Color_selection:
                return QPalette::Highlight;
                break;
        case Color_selectiontext:
                return QPalette::HighlightedText;
                break;
+       case Color_urllabel:
+       case Color_urltext:
+               return QPalette::Link;
        default:
-               return NoRole;
+               return QPalette::NoRole;
        }
 }
 
-}
+} // namespace
 
 
 void ColorCache::init()
@@ -79,10 +80,10 @@ QColor ColorCache::get(Color const & color, bool syscolors) const
        if (!initialized_)
                const_cast<ColorCache *>(this)->init();
        if (color <= Color_ignore && color.mergeColor == Color_ignore) {
-               QPalette::ColorRole cr = role(color.baseColor);
-               if (syscolors && cr != NoRole) {
-                       static QColor white = Qt::white;
-                       QColor c = pal_.brush(QPalette::Active, cr).color();
+               QPalette::ColorRole const cr = role(color.baseColor);
+               if (syscolors && cr != QPalette::NoRole) {
+                       static QColor const white = Qt::white;
+                       QColor const c = pal_.brush(QPalette::Active, cr).color();
                        if (cr == QPalette::Base && c == white)
                                return lcolors_[color.baseColor];
                        else
@@ -101,13 +102,18 @@ QColor ColorCache::get(Color const & color, bool syscolors) const
                        (base_color.blue() + merge_color.blue()) / 2);
        }
        // used by branches
-       return QColor(lcolor.getX11Name(color.baseColor).c_str()); 
+       return QColor(lcolor.getX11Name(color.baseColor).c_str());
 }
 
 
 bool ColorCache::isSystem(ColorCode const color) const
 {
-       return role(color) != NoRole;
+       QPalette::ColorRole const cr = role(color);
+       if (cr == QPalette::Base) {
+               static QColor const white = Qt::white;
+               return pal_.brush(QPalette::Active, cr).color() != white;
+       } else
+               return cr != QPalette::NoRole;
 }