#include "insets/insetbibitem.h"
#include "insets/insetfloat.h"
+#include "insets/insetwrap.h"
#include "support/LAssert.h"
#include "support/textutils.h"
// 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 ...
++endpit;
undoendpit = endpit;
}
- } else if (endpit!= pars_end) {
+ } else if (endpit != pars_end) {
// because of parindents etc.
++endpit;
}
}
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());
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,
|| 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);
}
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();
}
// 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())) {
y -= row->height();
}
}
-
+
cur.row(row);
// y is now the beginning of the cursor row
y += row->baseline();
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);
}