// Now remove all out of the pars which is NOT allowed in the
// new environment and set also another font if that is required.
+ // Merge paragraphs that are to be pasted into a text inset
+ // that does not allow multiple pars.
+ InsetText * inset_text = target_inset->asInsetText();
+ if (inset_text && !inset_text->allowMultiPar()) {
+ while (insertion.size() > 1)
+ mergeParagraph(buffer.params(), insertion, 0);
+ }
+
// Convert newline to paragraph break in ParbreakIsNewline
if (target_inset->getLayout().parbreakIsNewline()
|| pars[pit].layout().parbreak_is_newline) {
for (size_t i = 0; i != insertion.size(); ++i) {
pos_type end = insertion[i].size();
for (pos_type j = 0; j != end; ++j) {
+ // skip insets
+ if (insertion[i].isInset(j))
+ continue;
char_type const c = insertion[i].getChar(j);
if (!e->encodable(c)) {
// do not track deletion
namespace {
-void cutSelectionHelper(Cursor & cur, CutStack & cuts, bool doclear, bool realcut, bool putclip)
+void cutSelectionHelper(Cursor & cur, CutStack & cuts, bool realcut, bool putclip)
{
// This doesn't make sense, if there is no selection
if (!cur.selection())
cur.pos() = endpos;
cur.pit() = endpit;
- // sometimes necessary
- if (doclear
- && text->paragraphs()[begpit].stripLeadingSpaces(bp.track_changes))
- cur.fixIfBroken();
-
// need a valid cursor. (Lgb)
cur.clearSelection();
} // namespace
-void cutSelection(Cursor & cur, bool doclear, bool realcut)
+void cutSelection(Cursor & cur, bool realcut)
{
- cutSelectionHelper(cur, theCuts, doclear, realcut, true);
+ cutSelectionHelper(cur, theCuts, realcut, true);
}
-void cutSelectionToTemp(Cursor & cur, bool doclear, bool realcut)
+void cutSelectionToTemp(Cursor & cur, bool realcut)
{
- cutSelectionHelper(cur, tempCut, doclear, realcut, false);
+ cutSelectionHelper(cur, tempCut, realcut, false);
}
}
+void copySelectionToTemp(Cursor & cur)
+{
+ copySelectionToStack(cur, tempCut);
+}
+
+
void copySelection(Cursor const & cur, docstring const & plaintext)
{
// In tablemode, because copy and paste actually use special table stack
Buffer buffer("", false);
buffer.setUnnamed(true);
available = buffer.importString(names[i], text, errorList);
- // TeX2lyx (also used in the HTML chain) assumes English as document language
- // if no language is explicitly set (as is the case here).
- // We thus reset the temp buffer's language to the context language
- buffer.changeLanguage(buffer.language(), cur.getFont().language());
if (available)
available = !buffer.paragraphs().empty();
if (available && !buffer.paragraphs()[0].empty()) {
+ // TeX2lyx (also used in the HTML chain) assumes English as document language
+ // if no language is explicitly set (as is the case here).
+ // We thus reset the temp buffer's language to the context language
+ buffer.changeLanguage(buffer.language(), cur.getFont().language());
cur.recordUndo();
pasteParagraphList(cur, buffer.paragraphs(),
buffer.params().documentClassPtr(), errorList);
return;
cur.recordUndo();
- cutSelection(cur, true, false);
+ cutSelection(cur, false);
if (asParagraphs)
cur.text()->insertStringAsParagraphs(cur, text, cur.current_font);
else
par.insertChar(pos, *cit, font, cur.buffer()->params().track_changes);
// Cut the selection
- cutSelection(cur, true, false);
+ cutSelection(cur, false);
}
void replaceSelection(Cursor & cur)
{
if (cur.selection())
- cutSelection(cur, true, false);
+ cutSelection(cur, false);
}