From 2f7e36a95e10e0e3b0e8cf3967a198af6e7be165 Mon Sep 17 00:00:00 2001 From: David Capello Date: Fri, 11 Dec 2015 14:27:30 -0300 Subject: [PATCH] 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. --- src/app/ui/document_view.cpp | 10 ++++++++++ src/app/ui/document_view.h | 2 ++ src/app/util/expand_cel_canvas.cpp | 5 ----- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/app/ui/document_view.cpp b/src/app/ui/document_view.cpp index 1988156f2..ea1df260f 100644 --- a/src/app/ui/document_view.cpp +++ b/src/app/ui/document_view.cpp @@ -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) { if (m_editor->frame() >= m_editor->sprite()->totalFrames()) { diff --git a/src/app/ui/document_view.h b/src/app/ui/document_view.h index 2075fa571..e8c7e16b9 100644 --- a/src/app/ui/document_view.h +++ b/src/app/ui/document_view.h @@ -69,6 +69,8 @@ namespace app { void onBeforeRemoveLayer(doc::DocumentEvent& ev) override; void onAddFrame(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 onLayerRestacked(doc::DocumentEvent& ev) override; diff --git a/src/app/util/expand_cel_canvas.cpp b/src/app/util/expand_cel_canvas.cpp index 69ddf63c7..7206392d0 100644 --- a/src/app/util/expand_cel_canvas.cpp +++ b/src/app/util/expand_cel_canvas.cpp @@ -158,11 +158,6 @@ void ExpandCelCanvas::commit() // And finally we add the cel again in the layer. 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) { // If the size of each image is the same, we can create an undo