}
-void Paragraph::insertInset(pos_type pos, Inset * inset,
+bool Paragraph::insertInset(pos_type pos, Inset * inset,
Change const & change)
{
LASSERT(inset, /**/);
LASSERT(pos >= 0 && pos <= size(), /**/);
+ // Paragraph::insertInset() can be used in cut/copy/paste operation where
+ // d->inset_owner_ is not set yet.
+ if (d->inset_owner_ && !d->inset_owner_->insetAllowed(inset->lyxCode()))
+ return false;
+
d->insertChar(pos, META_INSET, change);
LASSERT(d->text_[pos] == META_INSET, /**/);
// Add a new entry in the insetlist_.
d->insetlist_.insert(inset, pos);
+ return true;
}
}
-void Paragraph::insertInset(pos_type pos, Inset * inset,
+bool Paragraph::insertInset(pos_type pos, Inset * inset,
Font const & font, Change const & change)
{
- insertInset(pos, inset, change);
+ bool const success = insertInset(pos, inset, change);
// Set the font/language of the inset...
setFont(pos, font);
+ return success;
}
odocstream & os, TexRow & texrow,
OutputParams const & runparams) const
{
- LYXERR(Debug::LATEX, "SimpleTeXOnePar... " << this);
+ LYXERR(Debug::LATEX, "Paragraph::latex... " << this);
bool return_value = false;
runparams);
}
- LYXERR(Debug::LATEX, "SimpleTeXOnePar...done " << this);
+ LYXERR(Debug::LATEX, "Paragraph::latex... done " << this);
return return_value;
}
for (pos_type i = beg; i < end; ++i) {
char_type const c = d->text_[i];
- if (isPrintable(c))
+ if (isPrintable(c) || c == '\t')
os.put(c);
else if (c == META_INSET && options & AS_STR_INSETS)
getInset(i)->textString(os);