app: make it possible to retrieve discarded vector layers too.
This commit is contained in:
parent
7aa61b1761
commit
ac46ece4e3
3 changed files with 31 additions and 8 deletions
|
|
@ -1152,6 +1152,8 @@ layers_retrieve_cmd_callback (GimpAction *action,
|
|||
gimp_link_layer_monitor (GIMP_LINK_LAYER (iter->data));
|
||||
else if (GIMP_IS_TEXT_LAYER (iter->data) && ! gimp_item_is_text_layer (iter->data))
|
||||
gimp_text_layer_retrieve (GIMP_TEXT_LAYER (iter->data));
|
||||
else if (GIMP_IS_VECTOR_LAYER (iter->data) && ! gimp_item_is_vector_layer (iter->data))
|
||||
gimp_vector_layer_retrieve (GIMP_VECTOR_LAYER (iter->data));
|
||||
}
|
||||
|
||||
gimp_image_undo_group_end (image);
|
||||
|
|
|
|||
|
|
@ -658,28 +658,48 @@ gimp_vector_layer_refresh (GimpVectorLayer *layer)
|
|||
void
|
||||
gimp_vector_layer_discard (GimpVectorLayer *layer)
|
||||
{
|
||||
GimpImage *image;
|
||||
|
||||
g_return_if_fail (GIMP_IS_VECTOR_LAYER (layer));
|
||||
g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)));
|
||||
|
||||
if (! layer->options)
|
||||
if (layer->modified)
|
||||
return;
|
||||
|
||||
if (layer->options->path)
|
||||
gimp_image_undo_push_vector_layer (gimp_item_get_image (GIMP_ITEM (layer)),
|
||||
_("Discard Vector Information"),
|
||||
layer, NULL);
|
||||
image = gimp_item_get_image (GIMP_ITEM (layer));
|
||||
|
||||
g_object_set (layer, "vector-layer-options", NULL, NULL);
|
||||
gimp_image_undo_push_vector_layer_modified (image, NULL, layer);
|
||||
g_object_set (layer, "modified", TRUE, NULL);
|
||||
|
||||
gimp_viewable_invalidate_preview (GIMP_VIEWABLE (layer));
|
||||
gimp_image_flush (gimp_item_get_image (GIMP_ITEM (layer)));
|
||||
}
|
||||
|
||||
void
|
||||
gimp_vector_layer_retrieve (GimpVectorLayer *layer)
|
||||
{
|
||||
GimpImage *image;
|
||||
|
||||
g_return_if_fail (GIMP_IS_VECTOR_LAYER (layer));
|
||||
g_return_if_fail (gimp_item_is_attached (GIMP_ITEM (layer)));
|
||||
|
||||
if (! layer->modified)
|
||||
return;
|
||||
|
||||
image = gimp_item_get_image (GIMP_ITEM (layer));
|
||||
|
||||
gimp_image_undo_push_vector_layer_modified (image, NULL, layer);
|
||||
gimp_image_undo_push_drawable_mod (image, NULL, GIMP_DRAWABLE (layer), TRUE);
|
||||
g_object_set (layer, "modified", FALSE, NULL);
|
||||
|
||||
gimp_vector_layer_render (layer);
|
||||
gimp_image_flush (image);
|
||||
}
|
||||
|
||||
gboolean
|
||||
gimp_item_is_vector_layer (GimpItem *item)
|
||||
{
|
||||
return (GIMP_IS_VECTOR_LAYER (item) &&
|
||||
GIMP_VECTOR_LAYER (item)->options);
|
||||
return (GIMP_IS_VECTOR_LAYER (item) && ! GIMP_VECTOR_LAYER (item)->modified);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ GimpVectorLayerOptions * gimp_vector_layer_get_options (GimpVectorLayer *layer)
|
|||
|
||||
void gimp_vector_layer_refresh (GimpVectorLayer *layer);
|
||||
void gimp_vector_layer_discard (GimpVectorLayer *layer);
|
||||
void gimp_vector_layer_retrieve (GimpVectorLayer *layer);
|
||||
|
||||
gboolean gimp_item_is_vector_layer (GimpItem *item);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue