]> git.lyx.org Git - features.git/blobdiff - src/BufferView.cpp
The way this was done here is inconsistent with how it is done
[features.git] / src / BufferView.cpp
index c8b376385d2689c318bb018d8be97a3af5890ef0..b2478a001468dcf6f4187150869a8f4a9a89bd64 100644 (file)
@@ -1415,20 +1415,21 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                for (Buffer * b = &buffer_; i == 0 || b != &buffer_;
                        b = theBufferList().next(b)) {
 
-                       DocIterator dit = b->getParFromID(id);
-                       if (dit.atEnd()) {
+                       Cursor cur(*this);
+                       cur.setCursor(b->getParFromID(id));
+                       if (cur.atEnd()) {
                                LYXERR(Debug::INFO, "No matching paragraph found! [" << id << "].");
                                ++i;
                                continue;
                        }
-                       LYXERR(Debug::INFO, "Paragraph " << dit.paragraph().id()
+                       LYXERR(Debug::INFO, "Paragraph " << cur.paragraph().id()
                                << " found in buffer `"
                                << b->absFileName() << "'.");
 
                        if (b == &buffer_) {
                                // Set the cursor
-                               dit.pos() = pos;
-                               setCursor(dit);
+                               cur.pos() = pos;
+                               mouseSetCursor(cur);
                                dr.screenUpdate(Update::Force | Update::FitCursor);
                        } else {
                                // Switch to other buffer view and resend cmd
@@ -1747,6 +1748,8 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                Cursor old = cur;
                bool const in_texted = cur.inTexted();
                cur.setCursor(doc_iterator_begin(cur.buffer()));
+               if (cur != old)
+                       notifyCursorLeavesOrEnters(old, cur);
                cur.selHandle(false);
                buffer_.changed(true);
                updateHoveredInset();
@@ -2494,7 +2497,7 @@ bool BufferView::checkDepm(Cursor & cur, Cursor & old)
        d->cursor_ = cur;
 
        // we would rather not do this here, but it needs to be done before
-       // the changed() signal is sent.
+       // the changed() signal is sent.
        buffer_.updateBuffer();
 
        buffer_.changed(true);
@@ -2783,7 +2786,7 @@ Point BufferView::coordOffset(DocIterator const & dit) const
        int lastw = 0;
 
        // Addup contribution of nested insets, from inside to outside,
-       // keeping the outer paragraph for a special handling below
+       // keeping the outer paragraph for a special handling below
        for (size_t i = dit.depth() - 1; i >= 1; --i) {
                CursorSlice const & sl = dit[i];
                int xx = 0;
@@ -2999,7 +3002,7 @@ void BufferView::checkCursorScrollOffset(PainterInfo & pi)
 
        // Horizontal scroll offset of the cursor row in pixels
        int offset = d->horiz_scroll_offset_;
-       int const MARGIN = Length(2, Length::EM).inPixels(workWidth());
+       int const MARGIN = Length(2, Length::EM).inPixels(pi.base);
        if (cur_x < offset + MARGIN) {
                // scroll right
                offset = cur_x - MARGIN;
@@ -3050,7 +3053,7 @@ void BufferView::draw(frontend::Painter & pain)
                LYXERR(Debug::PAINTING, "Strategy: NoScreenUpdate");
                pi.full_repaint = true;
                pi.pain.setDrawingEnabled(false);
-               tm.draw(pi, 0, y);
+               tm.draw(pi, 0, y);
                break;
 
        case SingleParUpdate:
@@ -3059,7 +3062,7 @@ void BufferView::draw(frontend::Painter & pain)
                // In general, only the current row of the outermost paragraph
                // will be redrawn. Particular cases where selection spans
                // multiple paragraph are correctly detected in TextMetrics.
-               tm.draw(pi, 0, y);
+               tm.draw(pi, 0, y);
                break;
 
        case DecorationUpdate: