ui: show annotation in code snippets for TokenLocations that wrap around the snippet

bug id = #12
This commit is contained in:
Eberhard Graether
2014-07-28 03:27:16 +02:00
parent ecd17c17a0
commit 182e18840e
8 changed files with 37 additions and 18 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ const std::string& QtCodeFile::getFileName() const
}
void QtCodeFile::addCodeSnippet(
int startLineNumber,
uint startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
const std::vector<Id>& activeTokenIds
+1 -1
View File
@@ -21,7 +21,7 @@ public:
const std::string& getFileName() const;
void addCodeSnippet(
int startLineNumber,
uint startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
const std::vector<Id>& activeTokenIds
+1 -1
View File
@@ -29,7 +29,7 @@ QtCodeFileList::~QtCodeFileList()
}
void QtCodeFileList::addCodeSnippet(
int startLineNumber,
uint startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
const std::vector<Id>& activeTokenIds
+1 -1
View File
@@ -21,7 +21,7 @@ public:
virtual ~QtCodeFileList();
void addCodeSnippet(
int startLineNumber,
uint startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
const std::vector<Id>& activeTokenIds
+3 -3
View File
@@ -35,7 +35,7 @@ void QtCodeSnippet::LineNumberArea::paintEvent(QPaintEvent *event)
QtCodeSnippet::QtCodeSnippet(
int startLineNumber,
uint startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
const std::vector<Id>& activeTokenIds,
@@ -133,7 +133,7 @@ void QtCodeSnippet::lineNumberAreaPaintEvent(QPaintEvent *event)
int QtCodeSnippet::lineNumberDigits() const
{
int digits = 1;
int max = qMax(1, m_startLineNumber + blockCount());
int max = qMax(1, int(m_startLineNumber) + blockCount());
while (max >= 10)
{
@@ -272,7 +272,7 @@ void QtCodeSnippet::createAnnotations(const TokenLocationFile& locationFile)
}
Annotation annotation;
if (location->isStartTokenLocation())
if (location->isStartTokenLocation() && location->getLineNumber() >= m_startLineNumber)
{
annotation.start = toTextEditPosition(location->getLineNumber(), location->getColumnNumber() - 1);
}
+2 -2
View File
@@ -36,7 +36,7 @@ public:
};
QtCodeSnippet(
int startLineNumber,
uint startLineNumber,
const std::string& code,
const TokenLocationFile& locationFile,
const std::vector<Id>& activeTokenIds,
@@ -90,7 +90,7 @@ private:
QPushButton* m_maximizeButton;
bool m_showMaximizeButton;
const int m_startLineNumber;
const uint m_startLineNumber;
const std::string m_filePath;
std::vector<Id> m_activeTokenIds;
+2 -2
View File
@@ -14,8 +14,8 @@ public:
{
CodeSnippetParams();
int startLineNumber;
int endLineNumber;
uint startLineNumber;
uint endLineNumber;
uint lineCount;
std::string code;
+26 -7
View File
@@ -501,7 +501,9 @@ TokenLocationFile Storage::getTokenLocationsForLinesInFile(
return ret;
}
for (uint i = firstLineNumber; i <= lastLineNumber; i++)
uint endLineNumber = locationFile->getTokenLocationLines().rbegin()->first;
for (uint i = firstLineNumber; i <= endLineNumber; i++)
{
TokenLocationLine* locationLine = locationFile->findTokenLocationLineByNumber(i);
if (!locationLine)
@@ -509,12 +511,29 @@ TokenLocationFile Storage::getTokenLocationsForLinesInFile(
continue;
}
locationLine->forEachTokenLocation(
[&](TokenLocation* tokenLocation) -> void
{
ret.addTokenLocationAsPlainCopy(tokenLocation);
}
);
if (locationLine->getLineNumber() <= lastLineNumber)
{
locationLine->forEachTokenLocation(
[&](TokenLocation* tokenLocation) -> void
{
ret.addTokenLocationAsPlainCopy(tokenLocation);
}
);
}
else
{
// Save start locations of TokenLocations that span accross the line range.
locationLine->forEachTokenLocation(
[&](TokenLocation* tokenLocation) -> void
{
if (tokenLocation->isEndTokenLocation() &&
tokenLocation->getStartTokenLocation()->getLineNumber() < firstLineNumber)
{
ret.addTokenLocationAsPlainCopy(tokenLocation->getStartTokenLocation());
}
}
);
}
}
return ret;