aboutsummaryrefslogtreecommitdiff
path: root/src/renderers/htmlrenderer.cpp
diff options
context:
space:
mode:
authorFelix "xq" Queißner <git@masterq32.de>2021-11-20 15:02:03 +0100
committerFelix "xq" Queißner <git@masterq32.de>2021-11-20 15:02:03 +0100
commit9dd660d66e23f02716d4b2bad84ac86764de71a6 (patch)
treef958489dc64d8afb34702ebe89bf24a71067d1c4 /src/renderers/htmlrenderer.cpp
parent9744a24ffbf4d5ea6ad8b418d740c90336ee33b8 (diff)
Improves caching api related to urls, implements fragment handling, fixes #237
Diffstat (limited to 'src/renderers/htmlrenderer.cpp')
-rw-r--r--src/renderers/htmlrenderer.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/renderers/htmlrenderer.cpp b/src/renderers/htmlrenderer.cpp
index 23f720e..c6e15ad 100644
--- a/src/renderers/htmlrenderer.cpp
+++ b/src/renderers/htmlrenderer.cpp
@@ -109,6 +109,10 @@ static void renderRecursive(RenderState & state, GumboNode const & node, int nes
bool process_header = false;
QString header_text;
+ // Fetch the original `id` attribute if any
+ char const * const header_id = getAttribute(element, "id");
+ QString const anchor = (header_id != nullptr) ? QString(header_id) : QString("header-%1").arg(state.header_count);
+
switch(element.tag) {
// Stripped tags
@@ -173,7 +177,7 @@ static void renderRecursive(RenderState & state, GumboNode const & node, int nes
process_header = true;
state.header_text = &header_text;
}
- stream += "<" + QString::fromUtf8(gumbo_normalized_tagname(element.tag)) + QString(" id=\"header-%1\">").arg(state.header_count);
+ stream += "<" + QString::fromUtf8(gumbo_normalized_tagname(element.tag)) + " id=\"" + anchor + "\">";
break;
default:
@@ -192,7 +196,6 @@ static void renderRecursive(RenderState & state, GumboNode const & node, int nes
QRegularExpression regex { "\\s+", QRegularExpression::DotMatchesEverythingOption };
QString const header = header_text.replace(regex, " ");
- QString const anchor = QString("header-%1").arg(state.header_count);
switch(element.tag) {
case GUMBO_TAG_H1: