fix layer order change
This commit is contained in:
@@ -1295,7 +1295,18 @@ void Canvas::layer_remove(int idx) // m_order index
|
||||
}
|
||||
void Canvas::layer_order(int idx, int pos) // m_order index
|
||||
{
|
||||
std::swap(m_layers[idx], m_layers[pos]);
|
||||
auto from = m_layers.begin() + idx;
|
||||
auto to = m_layers.begin() + pos;
|
||||
|
||||
if (pos < idx)
|
||||
std::rotate(to, from, from + 1);
|
||||
if (pos > idx)
|
||||
std::rotate(from, from + 1, to + 1);
|
||||
|
||||
if (m_current_layer_idx == idx)
|
||||
m_current_layer_idx = pos;
|
||||
else if (m_current_layer_idx == pos)
|
||||
m_current_layer_idx = idx;
|
||||
}
|
||||
void Canvas::layer_merge(int source_idx, int dest_idx) // m_layer index
|
||||
{
|
||||
|
||||
@@ -146,11 +146,11 @@ void NodePanelLayer::init()
|
||||
ActionManager::add(a);
|
||||
};
|
||||
btn_add->on_click = [this](Node*) {
|
||||
add_layer(true, true);
|
||||
add_layer(true, true, m_layers_container->get_child_index(m_current_layer) + 1);
|
||||
};
|
||||
btn_remove->on_click = [this](Node*) {
|
||||
if (m_layers.size() == 1)
|
||||
return; // dont' delete the last layer
|
||||
return; // don't delete the last layer
|
||||
remove_layer(m_current_layer);
|
||||
};
|
||||
btn_up->on_click = [this](Node*) {
|
||||
@@ -251,11 +251,11 @@ NodeLayer* NodePanelLayer::add_layer(const char* name, bool add_history /*= true
|
||||
return l.get();
|
||||
}
|
||||
|
||||
void NodePanelLayer::add_layer(bool add_history /*= true*/, bool create_events /*= false*/)
|
||||
void NodePanelLayer::add_layer(bool add_history /*= true*/, bool create_events /*= false*/, int index /*= -1*/)
|
||||
{
|
||||
static char s[64];
|
||||
sprintf(s, "Layer-%d", id_counter++);
|
||||
add_layer(s, add_history, create_events);
|
||||
add_layer(s, add_history, create_events, nullptr, nullptr, index);
|
||||
}
|
||||
|
||||
NodeLayer* NodePanelLayer::get_layer_at(int index)
|
||||
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
virtual void init() override;
|
||||
virtual kEventResult handle_event(Event* e) override;
|
||||
void merge(int src_index, int dst_index, bool create_history);
|
||||
void add_layer(bool add_history = true, bool create_events = false);
|
||||
void add_layer(bool add_history = true, bool create_events = false, int index = -1);
|
||||
NodeLayer* add_layer(const char* name, bool add_history = true, bool create_events = false,
|
||||
std::shared_ptr<Layer> layer = nullptr, std::shared_ptr<NodeLayer> layer_node = nullptr, int index = -1);
|
||||
NodeLayer* get_layer_at(int index);
|
||||
|
||||
Reference in New Issue
Block a user