- Merge Timeline::STATE_MOVING_LAYER/CEL/FRAME to STATE_MOVING_RANGE.
- Remove celmove.h/cpp and move_cel/copy_cel functions. Now they are
in the Timeline as dropRange/Cels/Frames/Layers member functions.
- Add DocumentApi::copyFrame/moveCel/copyCel member functions.
- Add timeline_drop_layer_deco and timeline_drop_frame_deco skin parts.
- Move code from DuplicateLayerCommand::onExecute() to new member
function DocumentApi::duplicateLayer().
- Fix a bug changing Cel's frame number: we weren't updating the Cel
position properly inside the LayerImage::m_cels collection. Now we use
LayerImage::moveCel() to change the Cel frame number.
- Other fixes to DocumentApi: Change bgcolor from int to color_t.
With this we can avoid confusion in the execution of commands like
Clear, that depending on the enable/disable state of the timeline range
it affects the timeline (clearing the whole range) or the sprite editor
(clearing the selected area). So now, when a sprite editor is clicked
we disable the range in the timeline, it's a way to say "as you clicked
this editor, commands will affect the editor, if you click the timeline
again, commands will affect the timeline".
- Add doc::ExportData with information about the last export operation.
- Add RepeatLastExport command.
- Add SaveFileBaseCommand as base Command class, to accept "filename"
param.
- Add parameters to ExportSpriteSheet so we can call it without UI
from "repeat last export".
The timeline wasn't being added as a Document observer, so it wasn't
getting notifications about layers modifications. In this way the timeline
wasn't able to update its m_layers[] internal field and was accessing to
removed layers/invalid memory.
Now we have three modes: normal mode (everything is visible), the first
intermediate mode (context bar+sprite editor+timeline), and advanced mode
(sprite editor only).
Related to issue 359: Program exits unexpectently after minimizing
and maximizing too fast.
I should find the cause of _al_wd_dirty_lines = NULL, but I wasn't able
to reproduce this bug, so at the moment this is the best I can do to avoid
a crash. (I suppose that it's related to a temporary invalid state because
thread sync issues when the screen/window changes its size.)