This is an automated email from the git hooks/post-receive script. thansen pushed a commit to branch master in repository aseprite.
commit 77c2fb57a71d0fc9af7af13ca0e1ff7c3c405dd0 Author: David Capello <[email protected]> Date: Thu Jan 29 12:08:29 2015 -0300 Fix get_cels_in_range() when range type != DocumentRange::kCels --- src/app/ui/editor/moving_cel_state.cpp | 8 ++++++-- src/app/util/range_utils.cpp | 21 ++++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/app/ui/editor/moving_cel_state.cpp b/src/app/ui/editor/moving_cel_state.cpp index 72a7bd6..15e9e2c 100644 --- a/src/app/ui/editor/moving_cel_state.cpp +++ b/src/app/ui/editor/moving_cel_state.cpp @@ -101,8 +101,12 @@ bool MovingCelState::onMouseUp(Editor* editor, MouseMessage* msg) DocumentRange range = App::instance()->getMainWindow()->getTimeline()->range(); if (range.enabled()) { - for (Cel* cel : get_cels_in_range(writer.sprite(), range)) - api.setCelPosition(writer.sprite(), cel, cel->x()+deltaX, cel->y()+deltaY); + for (Cel* cel : get_cels_in_range(writer.sprite(), range)) { + Layer* layer = cel->layer(); + ASSERT(layer); + if (layer && layer->isMoveable() && !layer->isBackground()) + api.setCelPosition(writer.sprite(), cel, cel->x()+deltaX, cel->y()+deltaY); + } } else if (m_cel) { api.setCelPosition(writer.sprite(), m_cel, m_celNewX, m_celNewY); diff --git a/src/app/util/range_utils.cpp b/src/app/util/range_utils.cpp index 771e3e5..296b371 100644 --- a/src/app/util/range_utils.cpp +++ b/src/app/util/range_utils.cpp @@ -31,17 +31,32 @@ namespace app { using namespace raster; // TODO the DocumentRange should be "iteratable" to replace this function -CelList get_cels_in_range(Sprite* sprite, const DocumentRange& range) +CelList get_cels_in_range(Sprite* sprite, const DocumentRange& inrange) { + DocumentRange range = inrange; CelList cels; + switch (range.type()) { + case DocumentRange::kNone: + return cels; + case DocumentRange::kCels: + break; + case DocumentRange::kFrames: + range.startRange(LayerIndex(0), inrange.frameBegin(), DocumentRange::kCels); + range.endRange(LayerIndex(sprite->countLayers()-1), inrange.frameEnd()); + break; + case DocumentRange::kLayers: + range.startRange(inrange.layerBegin(), FrameNumber(0), DocumentRange::kCels); + range.endRange(inrange.layerEnd(), sprite->lastFrame()); + break; + } + for (LayerIndex layerIdx = range.layerBegin(); layerIdx <= range.layerEnd(); ++layerIdx) { Layer* layer = sprite->indexToLayer(layerIdx); - if (!layer->isImage()) + if (!layer || !layer->isImage()) continue; LayerImage* layerImage = static_cast<LayerImage*>(layer); - for (FrameNumber frame = range.frameEnd(), begin = range.frameBegin().previous(); frame != begin; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

