When an error occurs inside an inset, the content rather than the inset

as a whole gets highlighted. Now, the error list carries information
about the starting id/pos and ending pos, but not about the ending id.
So, when computing the range to be highlighted as range = pos_end - pos_start,
if id_start != id_end, the result 1 means one inset and only the first
character in the inset would be highlighted. Thus, when id_start != id_end,
let pos_end = 0, such that the whole content will be highlighted.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37900 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Enrico Forestieri 2011-03-10 22:11:34 +00:00
parent 6118beae8d
commit c4d1c0943b

View File

@ -3930,6 +3930,12 @@ void Buffer::bufferErrors(TeXErrors const & terr, ErrorList & errorList) const
found = p->texrow.getIdFromRow(errorRow, id_end, pos_end); found = p->texrow.getIdFromRow(errorRow, id_end, pos_end);
} while (found && id_start == id_end && pos_start == pos_end); } while (found && id_start == id_end && pos_start == pos_end);
if (id_start != id_end) {
// Next registered position is outside the inset where
// the error occurred, so signal end-of-paragraph
pos_end = 0;
}
errorList.push_back(ErrorItem(it->error_desc, errorList.push_back(ErrorItem(it->error_desc,
it->error_text, id_start, pos_start, pos_end, buf)); it->error_text, id_start, pos_start, pos_end, buf));
} }