From a7ba04dbaf77af889006201172dc22f02e7b2307 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Sat, 26 Jul 2014 16:25:56 +0200 Subject: [PATCH] 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. --- src/BufferView.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/BufferView.cpp b/src/BufferView.cpp index 4bd1c12e77..e4e2a83b4f 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_ -- 2.39.2