[aseprite] 57/64: Add possibility to change between tags while playing
Tobias Hansen
thansen at moszumanska.debian.org
Tue Jun 21 14:43:05 UTC 2016
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit a4827a372734d3690a288491d30a3017f3b2d0f1
Author: David Capello <davidcapello at gmail.com>
Date: Fri May 27 13:45:12 2016 -0300
Add possibility to change between tags while playing
From:
https://twitter.com/_theMatteBlack/status/735185628107804672
---
src/app/ui/timeline.cpp | 31 ++++++++++++++++++++-----------
src/app/ui/timeline.h | 2 +-
2 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/src/app/ui/timeline.cpp b/src/app/ui/timeline.cpp
index 064c51c..a166608 100644
--- a/src/app/ui/timeline.cpp
+++ b/src/app/ui/timeline.cpp
@@ -242,7 +242,7 @@ void Timeline::setLayer(Layer* layer)
m_editor->setLayer(m_layer);
}
-void Timeline::setFrame(frame_t frame)
+void Timeline::setFrame(frame_t frame, bool byUser)
{
ASSERT(m_editor != NULL);
// ASSERT(frame >= 0 && frame < m_sprite->totalFrames());
@@ -255,8 +255,17 @@ void Timeline::setFrame(frame_t frame)
m_frame = frame;
invalidate();
- if (m_editor->frame() != frame)
+ if (m_editor->frame() != frame) {
+ bool isPlaying = m_editor->isPlaying();
+
+ if (isPlaying)
+ m_editor->stop();
+
m_editor->setFrame(m_frame);
+
+ if (isPlaying)
+ m_editor->play(false);
+ }
}
void Timeline::prepareToMoveRange()
@@ -277,7 +286,7 @@ void Timeline::moveRange(Range& range)
}
if (range.frameBegin() >= frame_t(0))
- setFrame(range.frameBegin() + m_moveRangeData.activeRelativeFrame);
+ setFrame(range.frameBegin() + m_moveRangeData.activeRelativeFrame, true);
m_range = range;
}
@@ -358,7 +367,7 @@ bool Timeline::onProcessMessage(Message* msg)
m_state = STATE_SELECTING_FRAMES;
m_range.startRange(getLayerIndex(m_layer), m_clk.frame, Range::kFrames);
- setFrame(m_clk.frame);
+ setFrame(m_clk.frame, true);
}
break;
}
@@ -405,7 +414,7 @@ bool Timeline::onProcessMessage(Message* msg)
if (old_layer != m_clk.layer
|| old_frame != m_clk.frame) {
setLayer(m_layers[m_clk.layer]);
- setFrame(m_clk.frame);
+ setFrame(m_clk.frame, true);
invalidate();
}
@@ -513,7 +522,7 @@ bool Timeline::onProcessMessage(Message* msg)
case STATE_SELECTING_FRAMES: {
m_range.endRange(getLayerIndex(m_layer), hit.frame);
- setFrame(m_clk.frame = hit.frame);
+ setFrame(m_clk.frame = hit.frame, true);
break;
}
@@ -522,7 +531,7 @@ bool Timeline::onProcessMessage(Message* msg)
|| (m_frame != hit.frame)) {
m_range.endRange(hit.layer, hit.frame);
setLayer(m_layers[m_clk.layer = hit.layer]);
- setFrame(m_clk.frame = hit.frame);
+ setFrame(m_clk.frame = hit.frame, true);
}
break;
}
@@ -1073,7 +1082,7 @@ void Timeline::onAfterRemoveLayer(doc::DocumentEvent& ev)
void Timeline::onAddFrame(doc::DocumentEvent& ev)
{
- setFrame(ev.frame());
+ setFrame(ev.frame(), false);
showCurrentCel();
clearClipboardRange();
@@ -1085,13 +1094,13 @@ void Timeline::onRemoveFrame(doc::DocumentEvent& ev)
// Adjust current frame of all editors that are in a frame more
// advanced that the removed one.
if (getFrame() > ev.frame()) {
- setFrame(getFrame()-1);
+ setFrame(getFrame()-1, false);
}
// If the editor was in the previous "last frame" (current value of
// totalFrames()), we've to adjust it to the new last frame
// (lastFrame())
else if (getFrame() >= sprite()->totalFrames()) {
- setFrame(sprite()->lastFrame());
+ setFrame(sprite()->lastFrame(), false);
}
showCurrentCel();
@@ -1120,7 +1129,7 @@ void Timeline::onAfterFrameChanged(Editor* editor)
if (m_fromTimeline)
return;
- setFrame(editor->frame());
+ setFrame(editor->frame(), false);
if (!hasCapture())
m_range.disableRange();
diff --git a/src/app/ui/timeline.h b/src/app/ui/timeline.h
index 042b8a1..2a72342 100644
--- a/src/app/ui/timeline.h
+++ b/src/app/ui/timeline.h
@@ -184,7 +184,7 @@ namespace app {
};
void setLayer(Layer* layer);
- void setFrame(frame_t frame);
+ void setFrame(frame_t frame, bool byUser);
bool allLayersVisible();
bool allLayersInvisible();
bool allLayersLocked();
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list