Improve annotation range hit checking
This commit is contained in:
Ilya Kirillov
2025-11-23 12:47:04 +03:00
parent 8cec950396
commit c8a32befde
3 changed files with 36 additions and 2 deletions

View File

@ -208,7 +208,7 @@
let inRunPos = data[2];
let misspell = data[3];
let marks = data[4];
let customMarks = data[5]
let customMarks = data[5];
this.handleRun(run);

View File

@ -165,7 +165,7 @@
if (!paraPos || !paragraph)
return {};
let marks = this.marks.getStartedMarks(paragraph, paraPos);
let marks = this.marks.getMarksByPos(paragraph, paraPos);
let ranges = {};
for (let i = 0; i < marks.length; ++i)
{

View File

@ -132,6 +132,40 @@
}
return result;
};
/**
* @param {AscWord.Paragraph} paragraph
* @param {AscWord.CParagraphContentPos} paraContentPos
* @returns {[]}
*/
CustomMarks.prototype.getMarksByPos = function(paragraph, paraContentPos)
{
let paraId = paragraph.GetId();
if (!this.paragraphs[paraId])
return [];
let marks = this.paragraphs[paraId];
let result = [];
for (let handlerId in marks)
{
for (let rangeId in marks[handlerId])
{
let startMark = marks[handlerId][rangeId].start;
let endMark = marks[handlerId][rangeId].end;
if (!startMark || !endMark)
continue;
let startPos = startMark.getParaPos();
let endPos = endMark.getParaPos();
if (!startPos || !endPos)
continue;
if (paraContentPos.Compare(startPos) >= 0 && paraContentPos.Compare(endPos) <= 0)
result.push(startMark);
}
}
return result;
};
CustomMarks.prototype.selectRange = function(paraId, handlerId, rangeId)
{
let paragraph = AscCommon.g_oTableId.GetById(paraId);