X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FColorCache.cpp;h=6036099e473e051e6c52e4edf0f4eba5ade98135;hb=b6eacd8d4f86734e8abef3335b190ce12a6a11b5;hp=66b10c1df97cc2bf625acc0565946e116152a866;hpb=4f45a35918bbb1cbf44179d4699031e1220f6323;p=lyx.git diff --git a/src/frontends/qt4/ColorCache.cpp b/src/frontends/qt4/ColorCache.cpp index 66b10c1df9..6036099e47 100644 --- a/src/frontends/qt4/ColorCache.cpp +++ b/src/frontends/qt4/ColorCache.cpp @@ -18,8 +18,6 @@ namespace lyx { namespace{ -// FIXME (later): Qt >= 4.4 has a proper QPalette::NoRole value. -QPalette::ColorRole const NoRole = static_cast(-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(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; }