1
0
mirror of https://github.com/aseprite/aseprite.git synced 2025-04-02 13:20:12 +00:00

Fix crash when we copy a cel w/drag-and-drop and change cel properties

This is because Context::notifyActiveSiteChanged() wasn't called on
each onAdd/RemoveCel() events. This should fix several bugs.
This commit is contained in:
David Capello 2015-12-11 14:27:30 -03:00
parent f27836744f
commit 2f7e36a95e
3 changed files with 12 additions and 5 deletions

@ -411,6 +411,16 @@ void DocumentView::onRemoveFrame(doc::DocumentEvent& ev)
} }
} }
void DocumentView::onAddCel(doc::DocumentEvent& ev)
{
UIContext::instance()->notifyActiveSiteChanged();
}
void DocumentView::onRemoveCel(doc::DocumentEvent& ev)
{
UIContext::instance()->notifyActiveSiteChanged();
}
void DocumentView::onTotalFramesChanged(doc::DocumentEvent& ev) void DocumentView::onTotalFramesChanged(doc::DocumentEvent& ev)
{ {
if (m_editor->frame() >= m_editor->sprite()->totalFrames()) { if (m_editor->frame() >= m_editor->sprite()->totalFrames()) {

@ -69,6 +69,8 @@ namespace app {
void onBeforeRemoveLayer(doc::DocumentEvent& ev) override; void onBeforeRemoveLayer(doc::DocumentEvent& ev) override;
void onAddFrame(doc::DocumentEvent& ev) override; void onAddFrame(doc::DocumentEvent& ev) override;
void onRemoveFrame(doc::DocumentEvent& ev) override; void onRemoveFrame(doc::DocumentEvent& ev) override;
void onAddCel(doc::DocumentEvent& ev) override;
void onRemoveCel(doc::DocumentEvent& ev) override;
void onTotalFramesChanged(doc::DocumentEvent& ev) override; void onTotalFramesChanged(doc::DocumentEvent& ev) override;
void onLayerRestacked(doc::DocumentEvent& ev) override; void onLayerRestacked(doc::DocumentEvent& ev) override;

@ -158,11 +158,6 @@ void ExpandCelCanvas::commit()
// And finally we add the cel again in the layer. // And finally we add the cel again in the layer.
m_transaction.execute(new cmd::AddCel(m_layer, m_cel)); m_transaction.execute(new cmd::AddCel(m_layer, m_cel));
// As we've created the cel, the active context site has changed
// (context->site().cel() to be precise).
if (m_document->context())
m_document->context()->notifyActiveSiteChanged();
} }
else if (m_celImage) { else if (m_celImage) {
// If the size of each image is the same, we can create an undo // If the size of each image is the same, we can create an undo