Author: forenr
Date: Thu Mar 10 23:11:34 2011
New Revision: 37900
URL: http://www.lyx.org/trac/changeset/37900

Log:
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.

Modified:
   lyx-devel/trunk/src/Buffer.cpp

Modified: lyx-devel/trunk/src/Buffer.cpp
==============================================================================
--- lyx-devel/trunk/src/Buffer.cpp      Thu Mar 10 21:15:34 2011        (r37899)
+++ lyx-devel/trunk/src/Buffer.cpp      Thu Mar 10 23:11:34 2011        (r37900)
@@ -3930,6 +3930,12 @@
                        found = p->texrow.getIdFromRow(errorRow, id_end, 
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,
                        it->error_text, id_start, pos_start, pos_end, buf));
        }

Reply via email to