From b25a4a6349ee5645eca32123f9263fdcbf6b4823 Mon Sep 17 00:00:00 2001 From: Leandro Melo <leandro.melo@nokia.com> Date: Wed, 14 Jul 2010 17:31:50 +0200 Subject: [PATCH] C++ tooltip: Changes in formatting extracted html. --- src/libs/utils/htmldocextractor.cpp | 40 ++++++++++++++++++----- src/libs/utils/htmldocextractor.h | 2 ++ src/plugins/cppeditor/cpphoverhandler.cpp | 17 ++++------ 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/libs/utils/htmldocextractor.cpp b/src/libs/utils/htmldocextractor.cpp index 7690dae79d2..2edb4c83850 100644 --- a/src/libs/utils/htmldocextractor.cpp +++ b/src/libs/utils/htmldocextractor.cpp @@ -266,6 +266,7 @@ void HtmlDocExtractor::formatContents(QString *html) const return; if (m_formatContents) { + stripBold(html); replaceNonStyledHeadingsForBold(html); replaceTablesForSimpleLines(html); replaceListsForSimpleLines(html); @@ -274,6 +275,7 @@ void HtmlDocExtractor::formatContents(QString *html) const stripDivs(html); stripTagsStyles(html); stripHeadings(html); + stripImagens(html); } if (m_lengthReference > -1 && html->length() > m_lengthReference) { @@ -288,9 +290,11 @@ void HtmlDocExtractor::formatContents(QString *html) const } else { html->truncate(m_lengthReference); } - html->append(QLatin1String("...")); - if (m_formatContents) - html->append(QLatin1String("<br />")); + if (m_formatContents) { + if (html->endsWith(QLatin1String("<br />"))) + html->chop(6); + html->append(QLatin1String("<p>...</p>")); + } } } @@ -327,7 +331,19 @@ void HtmlDocExtractor::stripTagsStyles(QString *html) void HtmlDocExtractor::stripTeletypes(QString *html) { - html->remove(createMinimalExp(QLatin1String("<tt>|</tt>"))); + html->remove(QLatin1String("<tt>")); + html->remove(QLatin1String("</tt>")); +} + +void HtmlDocExtractor::stripImagens(QString *html) +{ + html->remove(createMinimalExp(QLatin1String("<img.*>"))); +} + +void HtmlDocExtractor::stripBold(QString *html) +{ + html->remove(QLatin1String("<b>")); + html->remove(QLatin1String("</b>")); } void HtmlDocExtractor::replaceNonStyledHeadingsForBold(QString *html) @@ -340,13 +356,19 @@ void HtmlDocExtractor::replaceNonStyledHeadingsForBold(QString *html) void HtmlDocExtractor::replaceTablesForSimpleLines(QString *html) { - html->remove(createMinimalExp(QLatin1String("<table.*>"))); - html->remove(QLatin1String("</table>")); + html->replace(createMinimalExp(QLatin1String("(?:<p>)?<table.*>")), QLatin1String("<p>")); + html->replace(QLatin1String("</table>"), QLatin1String("</p>")); + html->remove(createMinimalExp(QLatin1String("<thead.*>"))); + html->remove(QLatin1String("</thead>")); + html->remove(createMinimalExp(QLatin1String("<tfoot.*>"))); + html->remove(QLatin1String("</tfoot>")); html->remove(createMinimalExp(QLatin1String("<tr.*><th.*>.*</th></tr>"))); html->replace(QLatin1String("</td><td"), QLatin1String("</td> <td")); + html->remove(createMinimalExp(QLatin1String("<td.*><p>"))); html->remove(createMinimalExp(QLatin1String("<td.*>"))); - html->remove(QLatin1String("</td>")); - html->replace(QLatin1String("<tr>"), QLatin1String(" - ")); + html->remove(createMinimalExp(QLatin1String("(?:</p>)?</td>"))); + html->replace(createMinimalExp(QLatin1String("<tr.*>")), + QLatin1String(" ")); html->replace(QLatin1String("</tr>"), QLatin1String("<br />")); } @@ -354,7 +376,7 @@ void HtmlDocExtractor::replaceListsForSimpleLines(QString *html) { html->remove(createMinimalExp(QLatin1String("<(?:ul|ol).*>"))); html->remove(createMinimalExp(QLatin1String("</(?:ul|ol)>"))); - html->replace(QLatin1String("<li>"), QLatin1String(" - ")); + html->replace(QLatin1String("<li>"), QLatin1String(" ")); html->replace(QLatin1String("</li>"), QLatin1String("<br />")); } diff --git a/src/libs/utils/htmldocextractor.h b/src/libs/utils/htmldocextractor.h index 86728d47884..819e7a5bc9c 100644 --- a/src/libs/utils/htmldocextractor.h +++ b/src/libs/utils/htmldocextractor.h @@ -85,6 +85,8 @@ private: static void stripDivs(QString *html); static void stripTagsStyles(QString *html); static void stripTeletypes(QString *html); + static void stripImagens(QString *html); + static void stripBold(QString *html); static void replaceNonStyledHeadingsForBold(QString *html); static void replaceTablesForSimpleLines(QString *html); static void replaceListsForSimpleLines(QString *html); diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp index 5e46c19c9ea..61d3f7a3f7a 100644 --- a/src/plugins/cppeditor/cpphoverhandler.cpp +++ b/src/plugins/cppeditor/cpphoverhandler.cpp @@ -70,20 +70,15 @@ namespace { return name.right(name.length() - index - 1); } - void moveCursorToEndOfQualifiedName(QTextCursor *tc) { + void moveCursorToEndOfName(QTextCursor *tc) { QTextDocument *doc = tc->document(); if (!doc) return; - while (true) { - const QChar &ch = doc->characterAt(tc->position()); - if (ch.isLetterOrNumber() || ch == QLatin1Char('_')) - tc->movePosition(QTextCursor::NextCharacter); - else if (ch == QLatin1Char(':') && - doc->characterAt(tc->position() + 1) == QLatin1Char(':')) - tc->movePosition(QTextCursor::NextCharacter, QTextCursor::MoveAnchor, 2); - else - break; + QChar ch = doc->characterAt(tc->position()); + while (ch.isLetterOrNumber() || ch == QLatin1Char('_')) { + tc->movePosition(QTextCursor::NextCharacter); + ch = doc->characterAt(tc->position()); } } } @@ -211,7 +206,7 @@ void CppHoverHandler::identifyMatch(TextEditor::ITextEditor *editor, int pos) QTextCursor tc(baseEditor->document()); tc.setPosition(pos); - moveCursorToEndOfQualifiedName(&tc); + moveCursorToEndOfName(&tc); // Fetch the expression's code ExpressionUnderCursor expressionUnderCursor; -- GitLab