]> git.lyx.org Git - lyx.git/blobdiff - src/text2.C
don't rm emergency saves ever
[lyx.git] / src / text2.C
index 83bec0feda471cba5f9d2ee8fa00155fdd3a4115..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"
@@ -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 ...
@@ -963,7 +964,7 @@ 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;
        }
@@ -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());
 
@@ -1314,7 +1323,7 @@ void LyXText::cutSelection(bool doclear, bool realcut)
        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);
 }
@@ -1383,21 +1392,21 @@ void LyXText::pasteSelection()
        setUndo(bv(), Undo::INSERT,
                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);
                }