]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
prepare Qt 5.6 builds
[lyx.git] / src / BufferView.cpp
index 06ea9ea6c964e9a73afda6a8e75cad07e82d44a0..81ebe79977370d21bf2e54341cd2ab5d400dc955 100644 (file)
@@ -351,11 +351,12 @@ BufferView::~BufferView()
 
 int BufferView::rightMargin() const
 {
+       // The value used to be hardcoded to 10, which is 2.5mm at 100dpi
+       int const default_margin = Length(2.5, Length::MM).inPixels(0);
        // The additional test for the case the outliner is opened.
-       if (!full_screen_ ||
-               !lyxrc.full_screen_limit ||
-               width_ < lyxrc.full_screen_width + 20)
-                       return 10;
+       if (!full_screen_ || !lyxrc.full_screen_limit
+           || width_ < lyxrc.full_screen_width + 2 * default_margin)
+               return default_margin;
 
        return (width_ - lyxrc.full_screen_width) / 2;
 }
@@ -808,6 +809,8 @@ bool BufferView::moveToPosition(pit_type bottom_pit, pos_type bottom_pos,
                setCursor(dit);
                // set the current font.
                d->cursor_.setCurrentFont();
+               // Do not forget to reset the anchor (see #9912)
+               d->cursor_.resetAnchor();
                // To center the screen on this new position we need the
                // paragraph position which is computed at draw() time.
                // So we need a redraw!
@@ -2202,7 +2205,7 @@ void BufferView::mouseEventDispatch(FuncRequest const & cmd0)
                // cursor in front of the inset.
                if (inset->hasSettings() &&
                    cur.nextInset() != inset && cur.prevInset() == inset)
-                       cur.backwardPos();
+                       cur.posBackward();
        }
 
        // Put anchor at the same position.
@@ -2509,8 +2512,12 @@ bool BufferView::mouseSetCursor(Cursor & cur, bool select)
        // FIXME: (2) if we had a working InsetText::notifyCursorLeaves,
        // the leftinset bool would not be necessary (badcursor instead).
        bool update = leftinset;
-       if (!do_selection && d->cursor_.inTexted())
+       if (!do_selection && d->cursor_.inTexted()) {
                update |= checkDepm(cur, d->cursor_);
+               if (cur.inTexted() && cur.pos()
+                       && cur.paragraph().isEnvSeparator(cur.pos() - 1))
+                   cur.posBackward();
+       }
 
        if (!do_selection)
                d->cursor_.resetAnchor();