]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
Rename TextMetrics::dimension() to dim()
[lyx.git] / src / BufferView.cpp
index c8a43a0a9aa20feed1183d309ec95c88e9128ae4..35a126b18ac6e87bb6e4240f34f999b146554f4b 100644 (file)
@@ -868,7 +868,7 @@ bool BufferView::moveToPosition(pit_type bottom_pit, pos_type bottom_pos,
                d->cursor_.setCurrentFont();
                // Do not forget to reset the anchor (see #9912)
                d->cursor_.resetAnchor();
-               processUpdateFlags(Update::FitCursor);
+               processUpdateFlags(Update::Force | Update::FitCursor);
        }
 
        return success;
@@ -956,7 +956,7 @@ bool BufferView::scrollToCursor(DocIterator const & dit, bool const recenter)
                int offset = coordOffset(dit).y_;
                int ypos = pm.position() + offset;
                Dimension const & row_dim =
-                       pm.getRow(cs.pos(), dit.boundary()).dimension();
+                       pm.getRow(cs.pos(), dit.boundary()).dim();
                int scrolled = 0;
                if (recenter)
                        scrolled = scroll(ypos - height_/2);
@@ -1000,7 +1000,7 @@ bool BufferView::scrollToCursor(DocIterator const & dit, bool const recenter)
        d->anchor_pit_ = bot_pit;
        CursorSlice const & cs = dit.innerTextSlice();
        Dimension const & row_dim =
-               pm.getRow(cs.pos(), dit.boundary()).dimension();
+               pm.getRow(cs.pos(), dit.boundary()).dim();
 
        if (recenter)
                d->anchor_ypos_ = height_/2;
@@ -1264,7 +1264,10 @@ Inset * BufferView::editedInset(string const & name) const
 
 void BufferView::editInset(string const & name, Inset * inset)
 {
-       d->edited_insets_[name] = inset;
+       if (inset)
+               d->edited_insets_[name] = inset;
+       else
+               d->edited_insets_.erase(name);
 }
 
 
@@ -1366,7 +1369,7 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                //  without calling recordUndo. Fix this before using
                //  recordUndoBufferParams().
                cur.recordUndoFullBuffer();
-               buffer_.params().setBaseClass(argument);
+               buffer_.params().setBaseClass(argument, buffer_.layoutPos());
                makeDocumentClass();
                dr.screenUpdate(Update::Force);
                dr.forceBufferUpdate();
@@ -1390,7 +1393,7 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
        case LFUN_LAYOUT_RELOAD: {
                LayoutFileIndex bc = buffer_.params().baseClassID();
                LayoutFileList::get().reset(bc);
-               buffer_.params().setBaseClass(bc);
+               buffer_.params().setBaseClass(bc, buffer_.layoutPos());
                makeDocumentClass();
                dr.screenUpdate(Update::Force);
                dr.forceBufferUpdate();
@@ -1901,10 +1904,12 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                        // At least one complete cell is selected and inset is a table.
                        // Select all cells
                        cur.idx() = 0;
+                       cur.pit() = 0;
                        cur.pos() = 0;
                        cur.resetAnchor();
                        cur.selection(true);
                        cur.idx() = cur.lastidx();
+                       cur.pit() = cur.lastpit();
                        cur.pos() = cur.lastpos();
                } else {
                        // select current cell
@@ -2512,15 +2517,26 @@ bool BufferView::setCursorFromInset(Inset const * inset)
 
 void BufferView::gotoLabel(docstring const & label)
 {
+       FuncRequest action;
+       bool have_inactive = false;
        for (Buffer const * buf : buffer().allRelatives()) {
                // find label
                for (TocItem const & item : *buf->tocBackend().toc("label")) {
-                       if (label == item.str()) {
+                       if (label == item.str() && item.isOutput()) {
                                lyx::dispatch(item.action());
                                return;
                        }
+                       // If we find an inactive label, save it for the case
+                       // that no active one is there
+                       if (label == item.str() && !have_inactive) {
+                               have_inactive = true;
+                               action = item.action();
+                       }
                }
        }
+       // We only found an inactive label. Go there.
+       if (have_inactive)
+               lyx::dispatch(action);
 }
 
 
@@ -2592,7 +2608,7 @@ bool BufferView::checkDepm(Cursor & cur, Cursor & old)
                return false;
 
        bool need_anchor_change = false;
-       bool changed = d->cursor_.text()->deleteEmptyParagraphMechanism(cur, old,
+       bool changed = Text::deleteEmptyParagraphMechanism(cur, old,
                need_anchor_change);
 
        if (need_anchor_change)