#include "LyXRC.h"
#include "Text.h"
#include "Paragraph.h"
-#include "paragraph_funcs.h"
#include "ParagraphParameters.h"
#include "ParIterator.h"
#include "Undo.h"
}
}
- InsetText in(buffer);
+ InsetText in(cur.buffer());
// Make sure there is no class difference.
in.paragraphs().clear();
// This works without copying any paragraph data because we have
}
-void copySelectionHelper(Buffer const & buf, ParagraphList const & pars,
+/// return true if the whole ParagraphList is deleted
+static bool isFullyDeleted(ParagraphList const & pars)
+{
+ pit_type const pars_size = static_cast<pit_type>(pars.size());
+
+ // check all paragraphs
+ for (pit_type pit = 0; pit < pars_size; ++pit) {
+ if (!pars[pit].empty()) // prevent assertion failure
+ if (!pars[pit].isDeleted(0, pars[pit].size()))
+ return false;
+ }
+ return true;
+}
+
+
+void copySelectionHelper(Buffer const & buf, Text const & text,
pit_type startpit, pit_type endpit,
int start, int end, DocumentClass const * const dc, CutStack & cutstack)
{
+ ParagraphList const & pars = text.paragraphs();
+
LASSERT(0 <= start && start <= pars[startpit].size(), /**/);
LASSERT(0 <= end && end <= pars[endpit].size(), /**/);
LASSERT(startpit != endpit || start <= end, /**/);
// PassThru paragraphs have the Language
// latex_language. This is invalid for others, so we
// need to change it to the buffer language.
- if (it->inInset().getLayout().isPassThru())
+ if (text.inset().getLayout().isPassThru())
it->changeLanguage(buf.params(),
latex_language, buf.language());
}
if (it->lyxCode() != FLEX_CODE)
// FIXME: Should we verify all InsetCollapsable?
continue;
- if (!it->undefined())
+ docstring const & n = newone->insetLayout(it->name()).name();
+ bool const is_undefined = n.empty() ||
+ n == DocumentClass::plainInsetLayout().name();
+ if (!is_undefined)
continue;
// The flex inset is undefined in newtc
docstring const s = bformat(_(
BufferParams const & bp = cur.buffer()->params();
if (realcut) {
copySelectionHelper(*cur.buffer(),
- text->paragraphs(),
+ *text,
begpit, endpit,
cur.selBegin().pos(), endpos,
bp.documentClassPtr(), theCuts);
(par != cur.selEnd().pit() || pos < cur.selEnd().pos()))
++pos;
- copySelectionHelper(*cur.buffer(), pars, par, cur.selEnd().pit(),
+ copySelectionHelper(*cur.buffer(), *text, par, cur.selEnd().pit(),
pos, cur.selEnd().pos(),
cur.buffer()->params().documentClassPtr(), cutstack);
return;
cur.recordUndo();
if (asParagraphs)
- cur.text()->insertStringAsParagraphs(cur, text);
+ cur.text()->insertStringAsParagraphs(cur, text, cur.current_font);
else
- cur.text()->insertStringAsLines(cur, text);
+ cur.text()->insertStringAsLines(cur, text, cur.current_font);
}
return;
// create inset for graphic
- InsetGraphics * inset = new InsetGraphics(*cur.buffer());
+ InsetGraphics * inset = new InsetGraphics(cur.buffer());
InsetGraphicsParams params;
params.filename = support::DocFileName(filename.absFilename());
inset->setParams(params);
if (i1.idx() == i2.idx()) {
if (i1.inset().asInsetMath()) {
MathData::const_iterator it = i1.cell().begin();
- return asString(MathData(it + i1.pos(), it + i2.pos()));
+ Buffer * buf = cur.buffer();
+ return asString(MathData(buf, it + i1.pos(), it + i2.pos()));
} else {
return from_ascii("unknown selection 1");
}