add duplicate layer
This commit is contained in:
@@ -170,6 +170,25 @@ void App::init_sidebar()
|
||||
title_update();
|
||||
};
|
||||
|
||||
layers->on_layer_duplicate = [this](Node*, int source_index) {
|
||||
Canvas::I->layer_add(layers->m_layers.back()->m_label_text.c_str());
|
||||
auto& dst = Canvas::I->m_layers.back();
|
||||
auto& src = Canvas::I->m_layers[Canvas::I->m_order[source_index]];
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
if (!src.m_dirty_face[i])
|
||||
continue;
|
||||
dst.m_rtt[i].copy(src.m_rtt[i]);
|
||||
dst.m_dirty_face[i] = src.m_dirty_face[i];
|
||||
dst.m_dirty_box[i] = src.m_dirty_box[i];
|
||||
dst.m_opacity = src.m_opacity;
|
||||
dst.m_blend_mode = src.m_blend_mode;
|
||||
dst.m_alpha_locked = src.m_alpha_locked;
|
||||
}
|
||||
Canvas::I->m_unsaved = true;
|
||||
title_update();
|
||||
};
|
||||
|
||||
layers->on_layer_change = [this](Node*, int old_idx, int new_idx) {
|
||||
canvas->m_canvas->m_current_layer_idx = canvas->m_canvas->m_order[new_idx];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user