commit a7ba04dbaf77af889006201172dc22f02e7b2307
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Sat Jul 26 16:25:56 2014 +0200

    Fine tune the scroll offset setting code
    
    The new code should feel a bit more natural. It avoids explicit pixel 
values for the margins and does not scroll in some cases where it is not 
necessary.

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 4bd1c12..e4e2a83 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -35,6 +35,7 @@
 #include "Language.h"
 #include "LaTeXFeatures.h"
 #include "LayoutFile.h"
+#include "Length.h"
 #include "Lexer.h"
 #include "LyX.h"
 #include "LyXAction.h"
@@ -2937,20 +2938,17 @@ void BufferView::checkCursorScrollOffset(PainterInfo & 
pi)
 
        // Horizontal scroll offset of the cursor row in pixels
        int offset = d->horiz_scroll_offset_;
-       int const MARGIN = 10;
+       int const MARGIN = Length(2, Length::EM).inPixels(workWidth());
        if (cur_x < offset + MARGIN) {
                // scroll right
                offset = cur_x - MARGIN;
        } else if (cur_x > offset + workWidth() - MARGIN) {
                // scroll left
                offset = cur_x - workWidth() + MARGIN;
-       } else if(offset > 0
-                 && row.width() - offset < workWidth()){
-               offset = row.width() - workWidth();
        }
 
-       if (offset != d->horiz_scroll_offset_)
-               LYXERR0("Offset is now " << offset);
+       if (offset < 0 || row.width() <= workWidth())
+               offset = 0;
 
        if (d->update_strategy_ == NoScreenUpdate
            && (offset != d->horiz_scroll_offset_

Reply via email to