app: add gimp_image_get_selected_drawables().

It is meant to replace gimp_image_get_active_drawable() in the end.
Note that I am not fully sure yet what we should do with multiple layers
selected, when some of them have a mask which is being edited.
This commit is contained in:
Jehan 2020-04-13 17:11:57 +02:00
parent ac56b1ed14
commit 9bd530a2b1
2 changed files with 42 additions and 0 deletions

View File

@ -4472,6 +4472,47 @@ gimp_image_set_active_vectors (GimpImage *image,
return active_vectors;
}
GList *
gimp_image_get_selected_drawables (GimpImage *image)
{
GimpImagePrivate *private;
GList *selected_channels;
GList *selected_layers;
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
private = GIMP_IMAGE_GET_PRIVATE (image);
selected_channels = gimp_item_tree_get_selected_items (private->channels);
selected_layers = gimp_item_tree_get_selected_items (private->layers);
/* If there is an active channel (a saved selection, etc.),
* we ignore the active layer
*/
if (selected_channels)
{
return selected_channels;
}
else if (selected_layers)
{
if (g_list_length (selected_layers) == 1)
{
/* As a special case, if only one layer is selected and mask
* edit is in progress, we return the mask as selected
* drawable instead of the layer.
*/
GimpLayer *layer = GIMP_LAYER (selected_layers->data);
GimpLayerMask *mask = gimp_layer_get_mask (layer);
if (mask && gimp_layer_get_edit_mask (layer))
selected_layers->data = mask;
}
return selected_layers;
}
return NULL;
}
GList *
gimp_image_get_selected_layers (GimpImage *image)
{

View File

@ -379,6 +379,7 @@ void gimp_image_unset_selected_channels (GimpImage *image);
GimpVectors * gimp_image_set_active_vectors (GimpImage *image,
GimpVectors *vectors);
GList * gimp_image_get_selected_drawables (GimpImage *image);
GList * gimp_image_get_selected_layers (GimpImage *image);
GList * gimp_image_get_selected_channels (GimpImage *image);
GList * gimp_image_get_selected_vectors (GimpImage *image);