mirror of https://github.com/GNOME/gimp.git
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:
parent
ac56b1ed14
commit
9bd530a2b1
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue