* Paragraph::insertInset(): check if inset insertion is allowed before insertion.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26810 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2008-10-08 14:03:15 +00:00
parent 53d7e1969f
commit 237c713046
3 changed files with 19 additions and 15 deletions

View File

@ -449,17 +449,23 @@ void Paragraph::Private::insertChar(pos_type pos, char_type c,
}
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;
}
@ -1303,12 +1309,13 @@ void Paragraph::insertChar(pos_type pos, char_type c,
}
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;
}

View File

@ -304,12 +304,15 @@ public:
///
void insertChar(pos_type pos, char_type c,
Font const &, Change const & change);
///
void insertInset(pos_type pos, Inset * inset,
/// Insert \p inset at position \p pos with \p change traking status.
/// \return true if successful.
bool insertInset(pos_type pos, Inset * inset,
Change const & change);
///
void insertInset(pos_type pos, Inset * inset,
Font const &, Change const & change);
/// Insert \p inset at position \p pos with \p change traking status and
/// \p font.
/// \return true if successful.
bool insertInset(pos_type pos, Inset * inset,
Font const & font, Change const & change);
///
Inset * getInset(pos_type pos);
///

View File

@ -46,13 +46,7 @@ static bool moveItem(Paragraph & fromPar, pos_type fromPos,
// the inset is not in the paragraph any more
tmpInset = fromPar.releaseInset(fromPos);
}
if (!toPar.inInset().insetAllowed(tmpInset->lyxCode())) {
delete tmpInset;
return false;
}
toPar.insertInset(toPos, tmpInset, tmpFont, tmpChange);
return toPar.insertInset(toPos, tmpInset, tmpFont, tmpChange);
} else {
fromPar.eraseChar(fromPos, false);
toPar.insertChar(toPos, tmpChar, tmpFont, tmpChange);