1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:37:37 +00:00

PaintBrush: Added 'Move active layer up/down' to the Menu

This allowes the active layer to be moved up or down.
This commit is contained in:
Pierre 2020-05-14 14:22:30 +02:00 committed by Andreas Kling
parent 80a360683f
commit 49727ffee4
3 changed files with 39 additions and 0 deletions

View file

@ -104,6 +104,26 @@ void Image::move_layer_to_front(Layer& layer)
m_layers.append(layer);
}
void Image::move_layer_down(Layer& layer)
{
NonnullRefPtr<Layer> protector(layer);
auto index = index_of(layer);
if (!index)
return;
m_layers.remove(index);
m_layers.insert(index - 1, layer);
}
void Image::move_layer_up(Layer& layer)
{
NonnullRefPtr<Layer> protector(layer);
auto index = index_of(layer);
if (index == m_layers.size() - 1)
return;
m_layers.remove(index);
m_layers.insert(index + 1, layer);
}
void Image::remove_layer(Layer& layer)
{
NonnullRefPtr<Layer> protector(layer);

View file

@ -57,6 +57,8 @@ public:
void move_layer_to_front(Layer&);
void move_layer_to_back(Layer&);
void move_layer_up(Layer&);
void move_layer_down(Layer&);
void remove_layer(Layer&);
private:

View file

@ -151,6 +151,23 @@ int main(int argc, char** argv)
layer_table_view.selection().set(layer_table_view.model()->index(0));
}, window));
layer_menu.add_separator();
layer_menu.add_action(GUI::Action::create("Move active layer up", { Mod_Ctrl, Key_PageUp }, [&](auto&) {
auto active_layer = image_editor.active_layer();
if(!active_layer)
return;
image_editor.image()->move_layer_up(*active_layer);
layer_table_view.move_selection(1);
image_editor.layers_did_change();
}, window));
layer_menu.add_action(GUI::Action::create("Move active layer down", { Mod_Ctrl, Key_PageDown }, [&](auto&) {
auto active_layer = image_editor.active_layer();
if(!active_layer)
return;
image_editor.image()->move_layer_down(*active_layer);
layer_table_view.move_selection(-1);
image_editor.layers_did_change();
}, window));
layer_menu.add_separator();
layer_menu.add_action(GUI::Action::create("Remove active layer", { Mod_Ctrl , Key_D }, [&](auto&) {
auto active_layer = image_editor.active_layer();
if(!active_layer)