mirror of
https://github.com/aseprite/aseprite.git
synced 2024-10-04 13:59:46 +00:00
Fix: Inconsistent layer number if we change from background layer to layer
This patch fixes https://github.com/aseprite/aseprite/issues/4084. Currently if we set layer to background and then back to layer, last used name isn't preserved. This patch makes layer save last used layer name before it gets converted to background so it won't get lost.
This commit is contained in:
parent
27ec013f8b
commit
afc52695eb
@ -25,8 +25,13 @@ ConfigureBackground::ConfigureBackground(Layer* layer)
|
||||
LayerFlags newFlags = LayerFlags(int(layer->flags())
|
||||
| int(LayerFlags::BackgroundLayerFlags));
|
||||
|
||||
// save previous layer name so it will be the same
|
||||
// if user changes layer from background to layer once again
|
||||
layer->setLayerPrevName(layer->name());
|
||||
|
||||
add(new cmd::SetLayerFlags(layer, newFlags));
|
||||
add(new cmd::SetLayerName(layer, "Background"));
|
||||
add(new cmd::SetLayerName(layer, layer->prevBgName().empty() ?
|
||||
"Background" : layer->prevBgName()));
|
||||
|
||||
if (layer->isImage() &&
|
||||
static_cast<LayerImage*>(layer)->opacity() < 255) {
|
||||
|
@ -9,7 +9,6 @@
|
||||
#endif
|
||||
|
||||
#include "app/cmd/layer_from_background.h"
|
||||
|
||||
#include "app/cmd/set_layer_flags.h"
|
||||
#include "app/cmd/set_layer_name.h"
|
||||
#include "doc/layer.h"
|
||||
@ -32,8 +31,12 @@ LayerFromBackground::LayerFromBackground(Layer* layer)
|
||||
LayerFlags newFlags = LayerFlags(int(layer->flags())
|
||||
& ~int(LayerFlags::BackgroundLayerFlags));
|
||||
|
||||
layer->setBgPrevName(layer->name());
|
||||
|
||||
add(new cmd::SetLayerFlags(layer, newFlags));
|
||||
add(new cmd::SetLayerName(layer, "Layer 0"));
|
||||
|
||||
// set previous set layer name before layer got changed to background
|
||||
add(new cmd::SetLayerName(layer, layer->prevName()));
|
||||
}
|
||||
|
||||
} // namespace cmd
|
||||
|
@ -59,6 +59,10 @@ namespace doc {
|
||||
|
||||
const std::string& name() const { return m_name; }
|
||||
void setName(const std::string& name) { m_name = name; }
|
||||
void setLayerPrevName(const std::string& name) { m_prev_name = name; }
|
||||
void setBgPrevName(const std::string& name) { m_prev_bg_name = name; }
|
||||
const std::string& prevName() const { return m_prev_name; }
|
||||
const std::string& prevBgName() const { return m_prev_bg_name; }
|
||||
|
||||
Sprite* sprite() const { return m_sprite; }
|
||||
LayerGroup* parent() const { return m_parent; }
|
||||
@ -129,8 +133,10 @@ namespace doc {
|
||||
|
||||
private:
|
||||
std::string m_name; // layer name
|
||||
std::string m_prev_name; // previous layer name (before conversion to bg)
|
||||
std::string m_prev_bg_name; // previous background layer name (before conversion to layer)
|
||||
Sprite* m_sprite; // owner of the layer
|
||||
LayerGroup* m_parent; // parent layer
|
||||
LayerGroup* m_parent; // parent layer
|
||||
LayerFlags m_flags; // stack order cannot be changed
|
||||
|
||||
// Disable assigment
|
||||
|
Loading…
Reference in New Issue
Block a user