From 90db2203299e08d2953fec92a7b7d1f82b0d6011 Mon Sep 17 00:00:00 2001 From: "Felix (xq) Queißner" Date: Tue, 23 Jun 2020 10:38:01 +0200 Subject: Adds link coloring for markdown. --- src/renderers/markdownrenderer.cpp | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'src/renderers/markdownrenderer.cpp') diff --git a/src/renderers/markdownrenderer.cpp b/src/renderers/markdownrenderer.cpp index 44a9575..c230ff7 100644 --- a/src/renderers/markdownrenderer.cpp +++ b/src/renderers/markdownrenderer.cpp @@ -259,9 +259,33 @@ static void renderNode(RenderState &state, cmark_node const & node, QTextCharFor } case CMARK_NODE_LINK: { - auto fmt = state.text_style.standard_link; - fmt.setAnchorHref(QString::fromUtf8((char*)node.as.link.url)); + QUrl absolute_url = QString::fromUtf8((char*)node.as.link.url); + if(absolute_url.isRelative()) { + absolute_url = state.root_url.resolved(absolute_url); + } + + QTextCharFormat fmt = state.text_style.external_link; + if (absolute_url.host() == state.root_url.host()) + { + fmt = state.text_style.standard_link; + } + else + { + fmt = state.text_style.external_link; + } + + QString suffix = ""; + if (absolute_url.scheme() != state.root_url.scheme()) + { + if(absolute_url.scheme() != "kristall+ctrl") { + suffix = " [" + absolute_url.scheme().toUpper() + "]"; + fmt = state.text_style.cross_protocol_link; + } + } + + fmt.setAnchorHref(absolute_url.toString(QUrl::FullyEncoded)); renderChildren(state, node, fmt); + cursor.insertText(suffix, fmt); break; } case CMARK_NODE_IMAGE: -- cgit v1.2.3