Hello Jean-Marc, Now it seems like most of the bugs are fixed with keyboard based solution.
*Selecting a different position in an already slid row *Selecting a range of text in an already slid row *Behaviour related to Home and End keys Above features seems to work well in this commit: http://git.lyx.org/?p=gsoc.git;a=commitdiff;h=ab23da89b5090f1cd8881335096a2be308da1650 As &row do not give the expected row address in checkCursorLeftEdge() method in BufferView when selecting certain positions in Math inset using the mouse pointer, above first two bugs caused. Here the row is defined as, Row const & row = cur.bottomRow(); At this situation the wideRow is differs from current_row_ in setCurrentRow method in Cursor.cpp. As we call that method as, // Set the row on which the cursor lives. cur.setCurrentRow(&row); Here the left_edge_ gets set to zero (0). Because of that, the left_edge value we use for calculation is wrong. I tried in several ways to fix this, but failed most of the times as I could not fix the &row value to the correct value. I think this is same as the cur_x problem that we had earlier. So I avoided setting left edge to 0 in setCurrentRow implementation. The major thing I am suffering now is the behaviour of the vertical scroll bar. I doubt, whether a code segment of this project, created the abnormal behaviour. Try scrolling down using vertical scroll bar in changesNeeded.lyx Could you please advice me on the next steps. Is the current implementation is good enough to move to the next stage (GUI based scrolling). Thanks Hashini