summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2019-01-18 09:59:56 (GMT)
committeralbert-github <albert.tests@gmail.com>2019-01-18 09:59:56 (GMT)
commite596bf3f21402ed555b305af7649546991bf8c3d (patch)
treef5d85b61c11903f2e44429087861a58c3d6baf1e
parent6a1b3708a6bc240cea79b3191b0dafacb014fdb6 (diff)
downloadDoxygen-e596bf3f21402ed555b305af7649546991bf8c3d.zip
Doxygen-e596bf3f21402ed555b305af7649546991bf8c3d.tar.gz
Doxygen-e596bf3f21402ed555b305af7649546991bf8c3d.tar.bz2
Double id for tooltips in XHTML Possible.
The tooltips (XHTML) should not be displayed per code fragment but for the entire (output) file as otherwise tooltips might be added multiple times resulting in double IDs.
-rw-r--r--src/clangparser.cpp2
-rw-r--r--src/code.l5
-rw-r--r--src/fortrancode.l5
-rw-r--r--src/htmlgen.cpp5
-rw-r--r--src/index.cpp3
-rw-r--r--src/pycode.l5
-rw-r--r--src/sqlcode.l6
-rw-r--r--src/vhdlcode.l5
-rw-r--r--src/xmlcode.l6
-rwxr-xr-xtesting/085/085__tooltip_8cpp.xml66
-rw-r--r--testing/085_tooltip.cpp22
11 files changed, 95 insertions, 35 deletions
diff --git a/src/clangparser.cpp b/src/clangparser.cpp
index c22d5c5..f24ec0a 100644
--- a/src/clangparser.cpp
+++ b/src/clangparser.cpp
@@ -825,7 +825,6 @@ static void detectFunctionBody(const char *s)
void ClangParser::writeSources(CodeOutputInterface &ol,FileDef *fd)
{
- TooltipManager::instance()->clearTooltips();
// (re)set global parser state
g_currentDefinition=0;
g_currentMemberDef=0;
@@ -934,7 +933,6 @@ void ClangParser::writeSources(CodeOutputInterface &ol,FileDef *fd)
clang_disposeString(tokenString);
}
ol.endCodeLine();
- TooltipManager::instance()->writeTooltips(ol);
}
ClangParser::ClangParser()
diff --git a/src/code.l b/src/code.l
index 558c439..933a7a7 100644
--- a/src/code.l
+++ b/src/code.l
@@ -3745,7 +3745,6 @@ void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s,
printlex(yy_flex_debug, TRUE, __FILE__, fd ? fd->fileName().data(): NULL);
- TooltipManager::instance()->clearTooltips();
if (g_codeClassSDict==0)
{
resetCCodeParserState();
@@ -3828,10 +3827,6 @@ void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s,
DBG_CTX((stderr,"endCodeLine(%d)\n",g_yyLineNr));
g_code->endCodeLine();
}
- if (fd)
- {
- TooltipManager::instance()->writeTooltips(*g_code);
- }
if (cleanupSourceDef)
{
// delete the temporary file definition used for this example
diff --git a/src/fortrancode.l b/src/fortrancode.l
index 0e610fd..616df5b 100644
--- a/src/fortrancode.l
+++ b/src/fortrancode.l
@@ -1327,7 +1327,6 @@ void parseFortranCode(CodeOutputInterface &od,const char *className,const QCStri
if (s.isEmpty()) return;
printlex(yy_flex_debug, TRUE, __FILE__, fd ? fd->fileName().data(): NULL);
- TooltipManager::instance()->clearTooltips();
g_code = &od;
g_inputString = s;
g_inputPosition = 0;
@@ -1382,10 +1381,6 @@ void parseFortranCode(CodeOutputInterface &od,const char *className,const QCStri
endFontClass();
g_code->endCodeLine();
}
- if (fd)
- {
- TooltipManager::instance()->writeTooltips(*g_code);
- }
if (exBlock && g_sourceFileDef)
{
// delete the temporary file definition used for this example
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index b8fc5a2..787d0a4 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -43,7 +43,7 @@
#include "ftvhelp.h"
#include "bufstr.h"
#include "resourcemgr.h"
-
+#include "tooltip.h"
//#define DBG_HTML(x) x;
#define DBG_HTML(x)
@@ -981,6 +981,9 @@ void HtmlGenerator::writePageFooter(FTextStream &t,const QCString &lastTitle,
void HtmlGenerator::writeFooter(const char *navPath)
{
+ // Currently only tooltips in HTML
+ TooltipManager::instance()->writeTooltips(m_codeGen);
+
writePageFooter(t,lastTitle,relPath,navPath);
}
diff --git a/src/index.cpp b/src/index.cpp
index 5d16e4e..6dc8720 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -48,6 +48,7 @@
#include "classlist.h"
#include "namespacedef.h"
#include "filename.h"
+#include "tooltip.h"
#define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX 200
#define MAX_ITEMS_BEFORE_QUICK_INDEX 30
@@ -301,9 +302,11 @@ void endFile(OutputList &ol,bool skipNavIndex,bool skipEndContents,
ol.writeString("</div><!-- doc-content -->\n");
}
}
+
ol.writeFooter(navPath); // write the footer
ol.popGeneratorState();
ol.endFile();
+ TooltipManager::instance()->clearTooltips(); // Only clear after the last is written
}
void endFileWithNavPath(Definition *d,OutputList &ol)
diff --git a/src/pycode.l b/src/pycode.l
index d9c9f01..8f2279e 100644
--- a/src/pycode.l
+++ b/src/pycode.l
@@ -1569,7 +1569,6 @@ void parsePythonCode(CodeOutputInterface &od,const char * /*className*/,
if (s.isEmpty()) return;
printlex(yy_flex_debug, TRUE, __FILE__, fd ? fd->fileName().data(): NULL);
g_codeClassSDict.setAutoDelete(TRUE);
- TooltipManager::instance()->clearTooltips();
g_code = &od;
g_inputString = s;
g_inputPosition = 0;
@@ -1620,10 +1619,6 @@ void parsePythonCode(CodeOutputInterface &od,const char * /*className*/,
{
endCodeLine();
}
- if (fd)
- {
- TooltipManager::instance()->writeTooltips(*g_code);
- }
if (cleanupSourceDef)
{
// delete the temporary file definition used for this example
diff --git a/src/sqlcode.l b/src/sqlcode.l
index fd0f11e..cbc6c3a 100644
--- a/src/sqlcode.l
+++ b/src/sqlcode.l
@@ -355,8 +355,6 @@ void parseSqlCode(
{
if (s.isEmpty()) return;
- TooltipManager::instance()->clearTooltips();
-
g_code = &od;
g_inputString = s;
g_inputPosition = 0;
@@ -404,10 +402,6 @@ void parseSqlCode(
{
endCodeLine();
}
- if (fd)
- {
- TooltipManager::instance()->writeTooltips(*g_code);
- }
if (cleanupSourceDef)
{
// delete the temporary file definition used for this example
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index aa15183..821cd33 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -1549,7 +1549,6 @@ void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString
//printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd);
if (s.isEmpty()) return;
printlex(yy_flex_debug, TRUE, __FILE__, fd ? fd->fileName().data(): NULL);
- TooltipManager::instance()->clearTooltips();
if (memberDef)
{
ClassDef *dd=memberDef->getClassDef();
@@ -1623,10 +1622,6 @@ void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString
{
endCodeLine();
}
- if (fd)
- {
- TooltipManager::instance()->writeTooltips(*g_code);
- }
if (cleanupSourceDef)
{
// delete the temporary file definition used for this example
diff --git a/src/xmlcode.l b/src/xmlcode.l
index d2f94ad..c6e01e8 100644
--- a/src/xmlcode.l
+++ b/src/xmlcode.l
@@ -339,8 +339,6 @@ void parseXmlCode(
{
if (s.isEmpty()) return;
- TooltipManager::instance()->clearTooltips();
-
g_code = &od;
g_inputString = s;
g_inputPosition = 0;
@@ -388,10 +386,6 @@ void parseXmlCode(
{
endCodeLine();
}
- if (fd)
- {
- TooltipManager::instance()->writeTooltips(*g_code);
- }
if (cleanupSourceDef)
{
// delete the temporary file definition used for this example
diff --git a/testing/085/085__tooltip_8cpp.xml b/testing/085/085__tooltip_8cpp.xml
new file mode 100755
index 0000000..d9eaf8b
--- /dev/null
+++ b/testing/085/085__tooltip_8cpp.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
+ <compounddef id="085__tooltip_8cpp" kind="file" language="C++">
+ <compoundname>085_tooltip.cpp</compoundname>
+ <sectiondef kind="define">
+ <memberdef kind="define" id="085__tooltip_8cpp_1ace0cca79d3f7e7c96b6edcb1b8d31e66" prot="public" static="no">
+ <name>FOPEN_MACRO</name>
+ <param>
+ <defname>fn</defname>
+ </param>
+ <param>
+ <defname>mod</defname>
+ </param>
+ <initializer>if ((<ref refid="085__tooltip_8cpp_1a5cccf7694b5d688466063895f39ee5d1" kindref="member">unit</ref> = fopen(fn, mod)) == NULL) \
+ { \
+ msg(OPEN_ERR,strerror(errno)); \
+ }</initializer>
+ <briefdescription>
+ </briefdescription>
+ <detaileddescription>
+ <para>a general open macro </para>
+ </detaileddescription>
+ <inbodydescription>
+ </inbodydescription>
+ <location file="085_tooltip.cpp" line="11" column="9" bodyfile="085_tooltip.cpp" bodystart="11" bodyend="-1"/>
+ </memberdef>
+ <memberdef kind="define" id="085__tooltip_8cpp_1a11a2c0486e2bbd915f975a3517817de6" prot="public" static="no">
+ <name>FCLOSE_MACRO</name>
+ <initializer>if (fclose(<ref refid="085__tooltip_8cpp_1a5cccf7694b5d688466063895f39ee5d1" kindref="member">unit</ref>) != 0) \
+ { \
+ msg(CLOSE_ERR,strerror(errno)); \
+ }</initializer>
+ <briefdescription>
+ </briefdescription>
+ <detaileddescription>
+ <para>a general close macro </para>
+ </detaileddescription>
+ <inbodydescription>
+ </inbodydescription>
+ <location file="085_tooltip.cpp" line="18" column="9" bodyfile="085_tooltip.cpp" bodystart="18" bodyend="-1"/>
+ </memberdef>
+ </sectiondef>
+ <sectiondef kind="var">
+ <memberdef kind="variable" id="085__tooltip_8cpp_1a5cccf7694b5d688466063895f39ee5d1" prot="public" static="no" mutable="no">
+ <type>FILE *</type>
+ <definition>FILE* unit</definition>
+ <argsstring/>
+ <name>unit</name>
+ <initializer>= NULL</initializer>
+ <briefdescription>
+ <para>the unit </para>
+ </briefdescription>
+ <detaileddescription>
+ </detaileddescription>
+ <inbodydescription>
+ </inbodydescription>
+ <location file="085_tooltip.cpp" line="8" column="1" bodyfile="085_tooltip.cpp" bodystart="8" bodyend="-1"/>
+ </memberdef>
+ </sectiondef>
+ <briefdescription>
+ </briefdescription>
+ <detaileddescription>
+ </detaileddescription>
+ <location file="085_tooltip.cpp"/>
+ </compounddef>
+</doxygen>
diff --git a/testing/085_tooltip.cpp b/testing/085_tooltip.cpp
new file mode 100644
index 0000000..fa97018
--- /dev/null
+++ b/testing/085_tooltip.cpp
@@ -0,0 +1,22 @@
+// objective: test tooltip in XHTML
+// check: 085__tooltip_8cpp.xml
+// config: SOURCE_BROWSER=YES
+/** \file */
+
+
+/** \brief the unit */
+FILE *unit = NULL;
+
+/** a general open macro */
+#define FOPEN_MACRO(fn ,mod) \
+ if ((unit = fopen(fn, mod)) == NULL) \
+ { \
+ msg(OPEN_ERR,strerror(errno)); \
+ }
+
+/** a general close macro */
+#define FCLOSE_MACRO \
+ if (fclose(unit) != 0) \
+ { \
+ msg(CLOSE_ERR,strerror(errno)); \
+ }