Replace document.site.layer preference with a layer_t

Now we save the previously selected layer of each document on its
preferences using the browsable set of layers.
This commit is contained in:
David Capello 2016-08-11 15:04:15 -03:00
parent b4c63a82e1
commit 13e8840014
3 changed files with 16 additions and 9 deletions

View File

@ -228,7 +228,7 @@
<document>
<section id="site">
<option id="frame" type="doc::frame_t" default="doc::frame_t(0)" />
<option id="layer" type="doc::LayerIndex" />
<option id="layer" type="doc::layer_t" default="doc::layer_t(0)" />
</section>
<section id="tiled">
<option id="mode" type="filters::TiledMode" default="filters::TiledMode::NONE" migrate="Tools.Tiled" />

View File

@ -21,7 +21,7 @@
#include "doc/brush_pattern.h"
#include "doc/documents_observer.h"
#include "doc/frame.h"
#include "doc/layer_index.h"
#include "doc/layer_list.h"
#include "filters/tiled_mode.h"
#include "gfx/rect.h"
#include "render/onionskin_position.h"

View File

@ -186,12 +186,16 @@ Editor::Editor(Document* document, EditorFlags flags)
base::Bind<void>(&Editor::onContextBarBrushChange, this));
// Restore last site in preferences
frame_t preferredFrame = m_docPref.site.frame();
Layer* preferredLayer = m_sprite->indexToLayer(m_docPref.site.layer());
if (preferredFrame >= 0 && preferredFrame <= m_sprite->lastFrame())
setFrame(preferredFrame);
if (preferredLayer)
setLayer(preferredLayer);
{
frame_t preferredFrame = m_docPref.site.frame();
if (preferredFrame >= 0 && preferredFrame <= m_sprite->lastFrame())
setFrame(preferredFrame);
LayerList layers = m_sprite->allBrowsableLayers();
layer_t layerIndex = m_docPref.site.layer();
if (layerIndex >= 0 && layerIndex <= int(layers.size()))
setLayer(layers[layerIndex]);
}
m_tiledConn = m_docPref.tiled.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
m_gridConn = m_docPref.grid.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
@ -211,8 +215,11 @@ Editor::Editor(Document* document, EditorFlags flags)
Editor::~Editor()
{
if (m_document && m_sprite) {
LayerList layers = m_sprite->allBrowsableLayers();
layer_t layerIndex = doc::find_layer_index(layers, layer());
m_docPref.site.frame(frame());
m_docPref.site.layer(m_sprite->layerToIndex(layer()));
m_docPref.site.layer(layerIndex);
}
m_observers.notifyDestroyEditor(this);