Hello Jean-Marc, > Identified another two bugs... > 1) When moving from the left most position of a row to the above too wide > row using left arrow, row does not get slide. (I think I found a fix for > this, have to test more)
Here is what I observe: https://dl.dropboxusercontent.com/u/105510128/Bug_2.webm And here is the suggested fix. I used the code segments that you suggested for Home/End problem. Otherwise no way, I would find an easy fix :) When debugging I found that at some point a FullScreenUpdate get called. After that, this problem no longer remains. You can see that in the video I have recorded. diff --git a/src/BufferView.cpp b/src/BufferView.cpp index 7e29216..eb212f3 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -2847,6 +2847,7 @@ void checkCursorLeftEdge(PainterInfo & pi, Cursor const & Bidi bidi; Row const & row = cur.bottomRow(); BufferView const & bv = cur.bv(); + bool row_need_slide = false; // Set the row on which the cursor lives. cur.setCurrentRow(&row); @@ -2868,11 +2869,22 @@ void checkCursorLeftEdge(PainterInfo & pi, Cursor const // If need to slide right if (cur_x < left_edge + 10) { left_edge = cur_x - 10; + row_need_slide = true; } // If need to slide left () else if (cur_x > left_edge + bv.workWidth() - 10) { left_edge = cur_x - bv.workWidth() + 10; + row_need_slide = true; + } + + if (cur.getCurrentRow() != cur.getPreviousRow() + && strategy == NoScreenUpdate + && row_need_slide) { + ScreenUpdateStrategy const oldstrat = strategy; + strategy = FullScreenUpdate; + LYXERR0("leftEdge: " << cur.getLeftEdge() << " => " << left_edge + << ", Update strategy " << oldstrat << " => " << strateg } cur.setLeftEdge(left_edge); I used this boolean to improve the efficiency. That is only call a FullScreeUpdate when moving from a lower roe to a too wide row. But without this boolean the behaviour is different. With the boolean, when we move from the right most position of a too wide row to the below row (using right arrow), the too wide row will not slide back to left most position. But later when moving across other row, that slides back. Without the boolean, when we move from the right most position of a too wide row to the below row (using right arrow), the too wide row get slide back to left most position. I think this is the behaviour that we are expecting. But calling a FullScreenUpdate each and every time moving between rows is not efficient. If we can find a way to identify that the cursor just moved from a too wide row, the problem will get solved. > 2) When selecting rage of text from left to right, we cannot drag and select > if the screen is maximized. We can select beyond screen limit if LyX screen > is not maximized (have some space between the right edge of original > computer screen and LyX scree's right edge). But i out example, cannot > select beyond the '{' character. Do not know the reason for this. Sorry I was wrong with the saying; "When selecting rage of text from left to right, we cannot drag and select if the screen is maximized." Others are correct. Problem is why selection cannot be done beyond the brace. Demonstrating this bug: https://dl.dropboxusercontent.com/u/105510128/Bug_3.webm Thanks Hashini