app: setting color tags actions now multi-item aware.

This commit is contained in:
Jehan 2023-01-10 19:32:14 +01:00
parent 036ba77415
commit 545b794b72
5 changed files with 31 additions and 22 deletions

View File

@ -526,14 +526,13 @@ channels_color_tag_cmd_callback (GimpAction *action,
gpointer data)
{
GimpImage *image;
GimpChannel *channel;
GList *channels;
GimpColorTag color_tag;
return_if_no_channel (image, channel, data);
return_if_no_channels (image, channels, data);
color_tag = (GimpColorTag) g_variant_get_int32 (value);
items_color_tag_cmd_callback (action, image, GIMP_ITEM (channel),
color_tag);
items_color_tag_cmd_callback (action, image, channels, color_tag);
}
void

View File

@ -220,23 +220,37 @@ items_lock_position_cmd_callback (GimpAction *action,
void
items_color_tag_cmd_callback (GimpAction *action,
GimpImage *image,
GimpItem *item,
GList *items,
GimpColorTag color_tag)
{
if (color_tag != gimp_item_get_color_tag (item))
{
GimpUndo *undo;
gboolean push_undo = TRUE;
GimpUndo *undo;
gboolean push_undo = TRUE;
GList *iter;
if (g_list_length (items) == 1)
{
undo = gimp_image_undo_can_compress (image, GIMP_TYPE_ITEM_UNDO,
GIMP_UNDO_ITEM_COLOR_TAG);
if (undo && GIMP_ITEM_UNDO (undo)->item == item)
if (undo && GIMP_ITEM_UNDO (undo)->item == GIMP_ITEM (items->data))
push_undo = FALSE;
gimp_item_set_color_tag (item, color_tag, push_undo);
gimp_image_flush (image);
}
else
{
/* TODO: undo groups cannot be compressed so far. */
gimp_image_undo_group_start (image,
GIMP_UNDO_GROUP_ITEM_PROPERTIES,
"Item color tag");
}
for (iter = items; iter; iter = iter->next)
if (color_tag != gimp_item_get_color_tag (iter->data))
gimp_item_set_color_tag (iter->data, color_tag, push_undo);
if (g_list_length (items) == 1)
gimp_image_undo_group_end (image);
gimp_image_flush (image);
}
void

View File

@ -34,7 +34,7 @@ void items_lock_position_cmd_callback (GimpAction *action,
void items_color_tag_cmd_callback (GimpAction *action,
GimpImage *image,
GimpItem *item,
GList *items,
GimpColorTag color_tag);
void items_fill_cmd_callback (GimpAction *action,

View File

@ -2105,15 +2105,12 @@ layers_color_tag_cmd_callback (GimpAction *action,
{
GimpImage *image;
GList *layers;
GList *iter;
GimpColorTag color_tag;
return_if_no_layers (image, layers, data);
color_tag = (GimpColorTag) g_variant_get_int32 (value);
for (iter = layers; iter; iter = iter->next)
items_color_tag_cmd_callback (action, image, GIMP_ITEM (iter->data),
color_tag);
items_color_tag_cmd_callback (action, image, layers, color_tag);
}

View File

@ -758,14 +758,13 @@ vectors_color_tag_cmd_callback (GimpAction *action,
gpointer data)
{
GimpImage *image;
GimpVectors *vectors;
GList *vectors;
GimpColorTag color_tag;
return_if_no_vectors (image, vectors, data);
return_if_no_vectors_list (image, vectors, data);
color_tag = (GimpColorTag) g_variant_get_int32 (value);
items_color_tag_cmd_callback (action, image, GIMP_ITEM (vectors),
color_tag);
items_color_tag_cmd_callback (action, image, vectors, color_tag);
}