]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
Add outliner section for broken refs and citations
[lyx.git] / src / Text3.cpp
index a91660336b3de3588bd1abee8bac29650228c4e7..4a4755637a9b0fe226e0f142efdeb70ffed20d9e 100644 (file)
@@ -581,7 +581,6 @@ Language const * getLanguage(Cursor const & cur, string const & lang)
 docstring resolveLayout(docstring layout, DocIterator const & dit)
 {
        Paragraph const & par = dit.paragraph();
-       docstring const old_layout = par.layout().name();
        DocumentClass const & tclass = dit.buffer()->params().documentClass();
 
        if (layout.empty())
@@ -674,7 +673,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_PARAGRAPH_MOVE_DOWN: {
                pit_type const pit = cur.pit();
                cur.recordUndo(pit, pit + 1);
-               cur.finishUndo();
                pars_.swap(pit, pit + 1);
                needsUpdate = true;
                cur.forceBufferUpdate();
@@ -1251,7 +1249,13 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                }
                        }
                } else {
+                       DocIterator const dit = cur.selectionBegin();
                        cutSelection(cur, false);
+                       if (cur.buffer()->params().track_changes)
+                               // since we're doing backwards deletion,
+                               // and the selection is not really cut,
+                               // move cursor before selection (#11630)
+                               cur.setCursor(dit);
                        singleParUpdate = false;
                }
                break;
@@ -1523,6 +1527,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                }
 
                bv->buffer().errors("Paste");
+               bv->buffer().updatePreviews(); // bug 11619
                cur.clearSelection(); // bug 393
                cur.finishUndo();
                break;
@@ -1605,7 +1610,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                if (inautoarg) {
                                        cur.leaveInset(cur.inset());
                                        cur.posForward();
-                                       inautoarg = false;
                                }
                                FuncRequest const cmd2(LFUN_ARGUMENT_INSERT, la_pair.first);
                                lyx::dispatch(cmd2);
@@ -2073,7 +2077,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                bool const sel = cur.selection();
                doInsertInset(cur, this, cmd, true, true);
                // Insert auto-insert arguments
-               bool autoargs, inautoarg = false;
+               bool autoargs = false, inautoarg = false;
                Layout::LaTeXArgMap args = cur.inset().getLayout().args();
                Layout::LaTeXArgMap::const_iterator lait = args.begin();
                Layout::LaTeXArgMap::const_iterator const laend = args.end();
@@ -2091,7 +2095,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                if (inautoarg) {
                                        cur.leaveInset(cur.inset());
                                        cur.posForward();
-                                       inautoarg = false;
                                        if (arg.insertonnewline && cur.pos() > 0) {
                                                FuncRequest cmd2(LFUN_PARAGRAPH_BREAK);
                                                lyx::dispatch(cmd2);
@@ -2762,14 +2765,14 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 
        case LFUN_OUTLINE_UP:
                outline(OutlineUp, cur, this);
-               setCursor(cur, cur.pit(), 0);
+               setCursor(cur, cur.pit(), cur.pos());
                cur.forceBufferUpdate();
                needsUpdate = true;
                break;
 
        case LFUN_OUTLINE_DOWN:
                outline(OutlineDown, cur, this);
-               setCursor(cur, cur.pit(), 0);
+               setCursor(cur, cur.pit(), cur.pos());
                cur.forceBufferUpdate();
                needsUpdate = true;
                break;
@@ -3361,6 +3364,10 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                                        enable = true;
                                        break;
                                }
+                               if (beg != end && it.paragraph().hasChangedInsets(beg, end)) {
+                                       enable = true;
+                                       break;
+                               }
                                if (in_last_par)
                                        break;
                        }