#include "insets/insetbibitem.h"
#include "insets/insetfloat.h"
+#include "insets/insetwrap.h"
#include "support/LAssert.h"
#include "support/textutils.h"
++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
ParagraphList::iterator pastend = boost::next(end);
if (!test_only)
- setUndo(bv(), Undo::EDIT, &(*start), &(*pastend));
+ setUndo(bv(), Undo::EDIT, start, pastend);
bool changed = false;
// 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 ...
// 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() ||
++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();
}
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());
{
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.
++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,
|| 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);
}
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();
}
// 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);
}
++endpit;
}
- setUndo(bv(), Undo::DELETE, &*old_cursor.par(), &*endpit);
+ setUndo(bv(), Undo::DELETE, old_cursor.par(), endpit);
cursor = tmpcursor;
// delete old row
++endpit;
}
- setUndo(bv(), Undo::DELETE, &*old_cursor.par(), &*endpit);
+ setUndo(bv(), Undo::DELETE, old_cursor.par(), endpit);
cursor = tmpcursor;
// delete old row