]> git.lyx.org Git - lyx.git/blobdiff - src/text2.C
don't rm emergency saves ever
[lyx.git] / src / text2.C
index 940b08820d5c6241a73b98d5a264e14a1fbe81dd..2580ec7c6b1e5168c7b80ad0b48864bb786527fe 100644 (file)
@@ -34,6 +34,7 @@
 
 #include "insets/insetbibitem.h"
 #include "insets/insetfloat.h"
+#include "insets/insetwrap.h"
 
 #include "support/LAssert.h"
 #include "support/textutils.h"
@@ -389,7 +390,7 @@ LyXText::setLayout(LyXCursor & cur, LyXCursor & sstart_cur,
                ++endpit;
        }
 
-       setUndo(bv(), Undo::EDIT, &*sstart_cur.par(), &*undoendpit);
+       setUndo(bv(), Undo::EDIT, sstart_cur.par(), undoendpit);
 
        // ok we have a selection. This is always between sstart_cur
        // and sel_end cursor
@@ -463,7 +464,7 @@ bool LyXText::changeDepth(bv_funcs::DEPTH_CHANGE type, bool test_only)
        ParagraphList::iterator pastend = boost::next(end);
 
        if (!test_only)
-               setUndo(bv(), Undo::EDIT, &(*start), &(*pastend));
+               setUndo(bv(), Undo::EDIT, start, pastend);
 
        bool changed = false;
 
@@ -504,10 +505,10 @@ bool LyXText::changeDepth(bv_funcs::DEPTH_CHANGE type, bool test_only)
 
        // Wow, redoParagraphs is stupid.
        LyXCursor tmpcursor;
-       setCursor(tmpcursor, &(*start), 0);
+       setCursor(tmpcursor, start, 0);
 
        //redoParagraphs(tmpcursor, &(*pastend));
-       redoParagraphs(tmpcursor, &(*pastend));
+       redoParagraphs(tmpcursor, pastend);
 
        // We need to actually move the text->cursor. I don't
        // understand why ...
@@ -566,7 +567,7 @@ void LyXText::setFont(LyXFont const & font, bool toggleall)
        // and sel_end cursor
 
        setUndo(bv(), Undo::EDIT,
-               &*selection.start.par(), &*boost::next(selection.end.par()));
+               selection.start.par(), boost::next(selection.end.par()));
        freezeUndo();
        cursor = selection.start;
        while (cursor.par() != selection.end.par() ||
@@ -963,12 +964,12 @@ void LyXText::setParagraph(bool line_top, bool line_bottom,
                        ++endpit;
                        undoendpit = endpit;
                }
-       } else if (endpit!= pars_end) {
+       } else if (endpit != pars_end) {
                // because of parindents etc.
                ++endpit;
        }
 
-       setUndo(bv(), Undo::EDIT, &*selection.start.par(), &*undoendpit);
+       setUndo(bv(), Undo::EDIT, selection.start.par(), undoendpit);
 
 
        ParagraphList::iterator tmppit = selection.end.par();
@@ -1173,8 +1174,16 @@ void LyXText::setCounter(Buffer const * buf, ParagraphList::iterator pit)
                        }
 
                        if (isOK) {
-                               Floating const & fl
-                                       = textclass.floats().getType(static_cast<InsetFloat*>(in)->type());
+                               string type;
+
+                               if (in->lyxCode() == Inset::FLOAT_CODE)
+                                       type = static_cast<InsetFloat*>(in)->params().type;
+                               else if (in->lyxCode() == Inset::WRAP_CODE)
+                                       type = static_cast<InsetWrap*>(in)->params().type;
+                               else
+                                       lyx::Assert(0);
+
+                               Floating const & fl = textclass.floats().getType(type);
 
                                textclass.counters().step(fl.type());
 
@@ -1255,8 +1264,8 @@ void LyXText::insertInset(Inset * inset)
 {
        if (!cursor.par()->insetAllowed(inset->lyxCode()))
                return;
-       setUndo(bv(), Undo::FINISH, &*cursor.par(),
-               &*boost::next(cursor.par()));
+       setUndo(bv(), Undo::FINISH, cursor.par(),
+               boost::next(cursor.par()));
        freezeUndo();
        cursor.par()->insertInset(cursor.pos(), inset);
        // Just to rebreak and refresh correctly.
@@ -1308,13 +1317,13 @@ void LyXText::cutSelection(bool doclear, bool realcut)
                ++endpit;
        }
 
-       setUndo(bv(), Undo::DELETE, &*selection.start.par(), &*undoendpit);
+       setUndo(bv(), Undo::DELETE, selection.start.par(), undoendpit);
 
 
        endpit = selection.end.par();
        int endpos = selection.end.pos();
 
-       boost::tie(endpit, endpos) = realcut ? 
+       boost::tie(endpit, endpos) = realcut ?
                CutAndPaste::cutSelection(ownerParagraphs(),
                                          selection.start.par(), endpit,
                                          selection.start.pos(), endpos,
@@ -1367,8 +1376,8 @@ void LyXText::copySelection()
                   || selection.start.pos() < selection.end.pos()))
                selection.start.pos(selection.start.pos() + 1);
 
-       CutAndPaste::copySelection(&*selection.start.par(),
-                                  &*selection.end.par(),
+       CutAndPaste::copySelection(selection.start.par(),
+                                  selection.end.par(),
                                   selection.start.pos(), selection.end.pos(),
                                   bv()->buffer()->params.textclass);
 }
@@ -1381,23 +1390,23 @@ void LyXText::pasteSelection()
                return;
 
        setUndo(bv(), Undo::INSERT,
-               &*cursor.par(), &*boost::next(cursor.par()));
+               cursor.par(), boost::next(cursor.par()));
 
-       Paragraph * endpar;
-       ParagraphList::iterator actpit = cursor.par();
-       int pos = cursor.pos();
+       ParagraphList::iterator endpit;
+       PitPosPair ppp;
 
-       Paragraph * actpar = &*actpit;
-       CutAndPaste::pasteSelection(&actpar, &endpar, pos,
-                                   bv()->buffer()->params.textclass);
+       boost::tie(ppp, endpit) =
+               CutAndPaste::pasteSelection(ownerParagraphs(),
+                                           cursor.par(), cursor.pos(),
+                                           bv()->buffer()->params.textclass);
 
-       redoParagraphs(cursor, endpar);
+       redoParagraphs(cursor, endpit);
 
        setCursor(cursor.par(), cursor.pos());
        clearSelection();
 
        selection.cursor = cursor;
-       setCursor(actpit, pos);
+       setCursor(ppp.first, ppp.second);
        setSelection();
        updateCounters();
 }
@@ -1626,10 +1635,10 @@ void LyXText::setCursor(LyXCursor & cur, ParagraphList::iterator pit,
        // same paragraph and there is a previous row then put the cursor on
        // the end of the previous row
        cur.iy(y + row->baseline());
-       if (row != beg && 
-           pos && 
-           boost::prior(row)->par() == row->par() && 
-           pos < pit->size() && 
+       if (row != beg &&
+           pos &&
+           boost::prior(row)->par() == row->par() &&
+           pos < pit->size() &&
            pit->getChar(pos) == Paragraph::META_INSET) {
                Inset * ins = pit->getInset(pos);
                if (ins && (ins->needFullRow() || ins->display())) {
@@ -1637,7 +1646,7 @@ void LyXText::setCursor(LyXCursor & cur, ParagraphList::iterator pit,
                        y -= row->height();
                }
        }
-       
+
        cur.row(row);
        // y is now the beginning of the cursor row
        y += row->baseline();
@@ -1863,7 +1872,7 @@ LyXText::getColumnNearX(RowList::iterator rit, int & x, bool & boundary) const
                if (body_pos > 0 && c == body_pos - 1) {
                        tmpx += fill_label_hfill +
                                font_metrics::width(layout->labelsep,
-                                              getLabelFont(bv()->buffer(), &*rit_par));
+                                              getLabelFont(bv()->buffer(), rit_par));
                        if (rit_par->isLineSeparator(body_pos - 1))
                                tmpx -= singleWidth(rit_par, body_pos - 1);
                }
@@ -2236,7 +2245,7 @@ bool LyXText::deleteEmptyParagraphMechanism(LyXCursor const & old_cursor)
                                ++endpit;
                        }
 
-                       setUndo(bv(), Undo::DELETE, &*old_cursor.par(), &*endpit);
+                       setUndo(bv(), Undo::DELETE, old_cursor.par(), endpit);
                        cursor = tmpcursor;
 
                        // delete old row
@@ -2267,7 +2276,7 @@ bool LyXText::deleteEmptyParagraphMechanism(LyXCursor const & old_cursor)
                                ++endpit;
                        }
 
-                       setUndo(bv(), Undo::DELETE, &*old_cursor.par(), &*endpit);
+                       setUndo(bv(), Undo::DELETE, old_cursor.par(), endpit);
                        cursor = tmpcursor;
 
                        // delete old row