void buffers_paste_as_new_cmd_callback (GtkAction *action, gpointer data) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (data); GimpContainer *container; GimpContext *context; GimpBuffer *buffer; container = gimp_container_view_get_container (editor->view); context = gimp_container_view_get_context (editor->view); buffer = gimp_context_get_buffer (context); if (buffer && gimp_container_have (container, GIMP_OBJECT (buffer))) { GimpImage *image = gimp_context_get_image (context); if (image) { GimpImage *new_image; new_image = gimp_image_new_from_buffer (image->gimp, image, buffer); gimp_create_display (image->gimp, new_image, GIMP_UNIT_PIXEL, 1.0); g_object_unref (new_image); } } }
static void buffers_paste (GimpBufferView *view, gboolean paste_into) { GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (view); GimpContainer *container; GimpContext *context; GimpBuffer *buffer; container = gimp_container_view_get_container (editor->view); context = gimp_container_view_get_context (editor->view); buffer = gimp_context_get_buffer (context); if (buffer && gimp_container_have (container, GIMP_OBJECT (buffer))) { GimpDisplay *display = gimp_context_get_display (context); GimpImage *image = NULL; gint x = -1; gint y = -1; gint width = -1; gint height = -1; if (display) { GimpDisplayShell *shell = gimp_display_get_shell (display); gimp_display_shell_untransform_viewport (shell, &x, &y, &width, &height); image = gimp_display_get_image (display); } else { image = gimp_context_get_image (context); } if (image) { gimp_edit_paste (image, gimp_image_get_active_drawable (image), buffer, paste_into, x, y, width, height); gimp_image_flush (image); } } }
void buffers_actions_update (GimpActionGroup *group, gpointer data) { GimpContext *context = action_data_get_context (data); GimpBuffer *buffer = NULL; if (context) buffer = gimp_context_get_buffer (context); #define SET_SENSITIVE(action,condition) \ gimp_action_group_set_action_sensitive (group, action, (condition) != 0) SET_SENSITIVE ("buffers-paste", buffer); SET_SENSITIVE ("buffers-paste-into", buffer); SET_SENSITIVE ("buffers-paste-as-new-layer", buffer); SET_SENSITIVE ("buffers-paste-as-new-image", buffer); SET_SENSITIVE ("buffers-delete", buffer); #undef SET_SENSITIVE }