("IDocumentation::Ptr");
@@ -105,7 +111,7 @@
if (d->m_shorten) {
//Do not create links in shortened mode, it's only for viewing
- return typeHighlight(name.toHtmlEscaped());
+ return theme().typeHighlight(name.toHtmlEscaped());
}
// NOTE: Since the by definition in the HTML standard some uri components
@@ -124,8 +130,7 @@
QString str = name.toHtmlEscaped();
if (d->m_linkCount == d->m_selectedLink)
- str = QLatin1String("") + str + QLatin1String(
- "");
+ str = theme().positionHighlight(str);
QString ret = QLatin1String("m_linkCount == d->m_selectedLink &&
@@ -579,8 +584,8 @@
if (line.indexOf(newLineRegExp) != -1) {
++d->m_currentLine;
if (d->m_currentLine == d->m_currentPositionLine) {
- d->m_currentText += QStringLiteral(
- " <-> "); // ><-> is <->
+ d->m_currentText += theme().positionHighlight(
+ QStringLiteral("<->")); // ><-> is <->
}
}
}
@@ -593,9 +598,16 @@
return d->m_currentText;
}
+const ColorizerTheme& AbstractNavigationContext::theme() const
+{
+ Q_D(const AbstractNavigationContext);
+
+ return d->m_theme;
+}
+
QString Colorizer::operator()(const QString& str) const
{
- QString ret = QLatin1String("") + str + QLatin1String("");
+ QString ret = QLatin1String("") + str + QLatin1String("");
if (m_formatting & Fixed)
ret = QLatin1String("") + ret + QLatin1String("");
@@ -607,14 +619,23 @@
return ret;
}
-const Colorizer AbstractNavigationContext::typeHighlight(QStringLiteral("006000"));
-const Colorizer AbstractNavigationContext::errorHighlight(QStringLiteral("990000"));
-const Colorizer AbstractNavigationContext::labelHighlight(QStringLiteral("000000"));
-const Colorizer AbstractNavigationContext::codeHighlight(QStringLiteral("005000"));
-const Colorizer AbstractNavigationContext::propertyHighlight(QStringLiteral("009900"));
-const Colorizer AbstractNavigationContext::navigationHighlight(QStringLiteral("000099"));
-const Colorizer AbstractNavigationContext::importantHighlight(QStringLiteral(
- "000000"), Colorizer::Bold | Colorizer::Italic);
-const Colorizer AbstractNavigationContext::commentHighlight(QStringLiteral("303030"));
-const Colorizer AbstractNavigationContext::nameHighlight(QStringLiteral("000000"), Colorizer::Bold);
+QString ColorizerTheme::foreground(const KColorScheme& scheme, KColorScheme::ForegroundRole role)
+{
+ return scheme.foreground(role).color().name();
+}
+
+ColorizerTheme::ColorizerTheme(const KColorScheme& scheme)
+ : typeHighlight(foreground(scheme, KColorScheme::LinkText))
+ , positionHighlight(foreground(scheme, KColorScheme::LinkText))
+ , errorHighlight(foreground(scheme, KColorScheme::NegativeText))
+ , labelHighlight(foreground(scheme, KColorScheme::NormalText))
+ , codeHighlight(foreground(scheme, KColorScheme::PositiveText))
+ , propertyHighlight(foreground(scheme, KColorScheme::NeutralText))
+ , navigationHighlight(foreground(scheme, KColorScheme::NormalText))
+ , importantHighlight(foreground(scheme, KColorScheme::ActiveText), Colorizer::Bold | Colorizer::Italic)
+ , commentHighlight(foreground(scheme, KColorScheme::InactiveText))
+ , nameHighlight(foreground(scheme, KColorScheme::ActiveText), Colorizer::Bold)
+{
+}
+
}
diff --git a/kdevplatform/language/duchain/navigation/abstractnavigationwidget.cpp b/kdevplatform/language/duchain/navigation/abstractnavigationwidget.cpp
--- a/kdevplatform/language/duchain/navigation/abstractnavigationwidget.cpp
+++ b/kdevplatform/language/duchain/navigation/abstractnavigationwidget.cpp
@@ -96,14 +96,6 @@
Q_ASSERT(!d->m_browser);
Q_UNUSED(height);
d->m_browser = new QTextBrowser;
-
- // since we can embed arbitrary HTML we have to make sure it stays readable by forcing a black-white palette
- QPalette p;
- p.setColor(QPalette::AlternateBase, Qt::white);
- p.setColor(QPalette::Base, Qt::white);
- p.setColor(QPalette::Text, Qt::black);
- d->m_browser->setPalette(p);
-
d->m_browser->setOpenLinks(false);
d->m_browser->setOpenExternalLinks(false);
diff --git a/kdevplatform/language/duchain/navigation/problemnavigationcontext.cpp b/kdevplatform/language/duchain/navigation/problemnavigationcontext.cpp
--- a/kdevplatform/language/duchain/navigation/problemnavigationcontext.cpp
+++ b/kdevplatform/language/duchain/navigation/problemnavigationcontext.cpp
@@ -135,7 +135,7 @@
modifyHtml() += QStringLiteral("
");
if (m_flags & ShowLocation) {
- modifyHtml() += labelHighlight(i18n("Location: "));
+ modifyHtml() += theme().labelHighlight(i18n("Location: "));
makeLink(QStringLiteral("%1 :%2")
.arg(problem->finalLocation().document.toUrl().fileName())
.arg(problem->finalLocation().start().line() + 1),
@@ -167,7 +167,7 @@
DUChainReadLocker lock;
for (auto diagnostic : diagnostics) {
modifyHtml() += QStringLiteral("");
- modifyHtml() += labelHighlight(QStringLiteral("%1: ").arg(diagnostic->severityString()));
+ modifyHtml() += theme().labelHighlight(QStringLiteral("%1: ").arg(diagnostic->severityString()));
modifyHtml() += escapedHtml(diagnostic->description());
const DocumentRange range = diagnostic->finalLocation();
diff --git a/kdevplatform/language/duchain/navigation/usesnavigationcontext.cpp b/kdevplatform/language/duchain/navigation/usesnavigationcontext.cpp
--- a/kdevplatform/language/duchain/navigation/usesnavigationcontext.cpp
+++ b/kdevplatform/language/duchain/navigation/usesnavigationcontext.cpp
@@ -50,7 +50,7 @@
modifyHtml() += QLatin1String("
");
if (auto context = previousContext()) {
- modifyHtml() += navigationHighlight(i18n("Uses of "));
+ modifyHtml() += theme().navigationHighlight(i18n("Uses of "));
makeLink(context->name(), context->name(), NavigationAction(context));
} else {
KDevelop::DUChainReadLocker lock(DUChain::lock());
diff --git a/plugins/clang/duchain/macronavigationcontext.cpp b/plugins/clang/duchain/macronavigationcontext.cpp
--- a/plugins/clang/duchain/macronavigationcontext.cpp
+++ b/plugins/clang/duchain/macronavigationcontext.cpp
@@ -66,7 +66,7 @@
"%2: the macro name and arguments",
"%1: %2",
(m_macro->isFunctionLike() ? i18n("Function macro") : i18n("Macro")),
- importantHighlight(name()) + parameters);
+ theme().importantHighlight(name()) + parameters);
modifyHtml() += QStringLiteral("
");
modifyHtml() += i18nc("%1: the link to the definition", "Defined in: %1",
createLink(QStringLiteral("%1 :%2").arg(url.fileName()).arg(cursor.line()+1), path, action));
diff --git a/plugins/qmljs/duchain/navigation/declarationnavigationcontext.cpp b/plugins/qmljs/duchain/navigation/declarationnavigationcontext.cpp
--- a/plugins/qmljs/duchain/navigation/declarationnavigationcontext.cpp
+++ b/plugins/qmljs/duchain/navigation/declarationnavigationcontext.cpp
@@ -61,7 +61,7 @@
if (funcType) {
// Don't let eventuallyMakeTypeLinks cast funcType to an identified type
// and try to print it! The function most of the time has no name.
- modifyHtml() += typeHighlight(type->toString().toHtmlEscaped());
+ modifyHtml() += theme().m_typeHighlight(type->toString().toHtmlEscaped());
} else {
KDevelop::AbstractDeclarationNavigationContext::eventuallyMakeTypeLinks(type);
}