diff --git a/app/actions/layers-actions.c b/app/actions/layers-actions.c index 491fe334052a4bf7cb256225bd0d8971e814f7a3..ee8b7431ce14c38ce4d1e20772cdd3fc33a3f52d 100644 --- a/app/actions/layers-actions.c +++ b/app/actions/layers-actions.c @@ -737,6 +737,9 @@ layers_actions_update (GimpActionGroup *group, gboolean last_mode = FALSE; gboolean first_mode = FALSE; + gboolean first_selected = FALSE; /* First layer is selected */ + gboolean last_selected = FALSE; /* Last layer is selected */ + gboolean have_masks = FALSE; /* At least 1 selected layer has a mask. */ gboolean have_no_masks = FALSE; /* At least 1 selected layer has no mask. */ gboolean have_groups = FALSE; /* At least 1 selected layer is a group. */ @@ -834,6 +837,11 @@ layers_actions_update (GimpActionGroup *group, layer_list = gimp_item_get_container_iter (GIMP_ITEM (iter->data)); iter2 = g_list_find (layer_list, iter->data); + if (gimp_item_get_index (iter2->data) == 0) + first_selected = TRUE; + if (gimp_item_get_index (iter2->data) == n_layers - 1) + last_selected = TRUE; + if (iter2) { GList *next_visible; @@ -982,9 +990,9 @@ layers_actions_update (GimpActionGroup *group, SET_SENSITIVE ("layers-select-previous", n_selected_layers > 0 && !fs && !ac && have_prev); SET_SENSITIVE ("layers-select-next", n_selected_layers > 0 && !fs && !ac && have_next); - SET_SENSITIVE ("layers-raise", n_selected_layers > 0 && !fs && !ac && have_prev); + SET_SENSITIVE ("layers-raise", n_selected_layers > 0 && !fs && !ac && have_prev && !first_selected); SET_SENSITIVE ("layers-raise-to-top", n_selected_layers > 0 && !fs && !ac && have_prev); - SET_SENSITIVE ("layers-lower", n_selected_layers > 0 && !fs && !ac && have_next); + SET_SENSITIVE ("layers-lower", n_selected_layers > 0 && !fs && !ac && have_next && !last_selected); SET_SENSITIVE ("layers-lower-to-bottom", n_selected_layers > 0 && !fs && !ac && have_next); SET_VISIBLE ("layers-anchor", fs && !ac); diff --git a/app/actions/layers-commands.c b/app/actions/layers-commands.c index 689cb901a38880e01242829871e19adc54005a2e..be04868a6f6b5ad13427b6f2bb200630ba9e564a 100644 --- a/app/actions/layers-commands.c +++ b/app/actions/layers-commands.c @@ -657,7 +657,15 @@ layers_raise_cmd_callback (GimpAction *action, index = gimp_item_get_index (iter->data); if (index > 0) - raised_layers = g_list_prepend (raised_layers, iter->data); + { + raised_layers = g_list_prepend (raised_layers, iter->data); + } + else + { + gimp_image_flush (image); + g_list_free (raised_layers); + return; + } } gimp_image_undo_group_start (image, @@ -665,6 +673,8 @@ layers_raise_cmd_callback (GimpAction *action, ngettext ("Raise Layer", "Raise Layers", g_list_length (raised_layers))); + + raised_layers = g_list_reverse (raised_layers); for (iter = raised_layers; iter; iter = iter->next) gimp_image_raise_item (image, iter->data, NULL); @@ -728,7 +738,15 @@ layers_lower_cmd_callback (GimpAction *action, layer_list = gimp_item_get_container_iter (GIMP_ITEM (iter->data)); index = gimp_item_get_index (iter->data); if (index < g_list_length (layer_list) - 1) - lowered_layers = g_list_prepend (lowered_layers, iter->data); + { + lowered_layers = g_list_prepend (lowered_layers, iter->data); + } + else + { + gimp_image_flush (image); + g_list_free (lowered_layers); + return; + } } gimp_image_undo_group_start (image,