[gimp] Bug 781408 - script fails due to error in edit-copy / edit-paste
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Bug 781408 - script fails due to error in edit-copy / edit-paste
- Date: Wed, 19 Apr 2017 19:46:26 +0000 (UTC)
commit c2f0226f66fd9a46e4158819cd96bc809518afdd
Author: Michael Natterer <mitch gimp org>
Date: Wed Apr 19 16:44:08 2017 -0300
Bug 781408 - script fails due to error in edit-copy / edit-paste
Fix the edit-paste and edit-paste-as-new-image PDB wrappers to use
gimp_get_clipboard_object(), not just clipboard_buffer(), and deal
correctly with entire images in the clipboard.
app/pdb/edit-cmds.c | 21 +++++++++++++++------
tools/pdbgen/pdb/edit.pdb | 21 +++++++++++++++------
2 files changed, 30 insertions(+), 12 deletions(-)
---
diff --git a/app/pdb/edit-cmds.c b/app/pdb/edit-cmds.c
index 5c026eb..51f19d2 100644
--- a/app/pdb/edit-cmds.c
+++ b/app/pdb/edit-cmds.c
@@ -32,10 +32,12 @@
#include "core/gimp-edit.h"
#include "core/gimp-gradients.h"
#include "core/gimp.h"
+#include "core/gimpbuffer.h"
#include "core/gimpchannel.h"
#include "core/gimpdrawable-blend.h"
#include "core/gimpdrawable-bucket-fill.h"
#include "core/gimpdrawable.h"
+#include "core/gimpimage-duplicate.h"
#include "core/gimpimage-new.h"
#include "core/gimpimage.h"
#include "core/gimplayer.h"
@@ -203,15 +205,15 @@ edit_paste_invoker (GimpProcedure *procedure,
if (success)
{
- GimpBuffer *buffer = gimp_get_clipboard_buffer (gimp);
+ GimpObject *paste = gimp_get_clipboard_object (gimp);
- if (buffer &&
+ if (paste &&
gimp_pdb_item_is_attached (GIMP_ITEM (drawable), NULL,
GIMP_PDB_ITEM_CONTENT, error) &&
gimp_pdb_item_is_not_group (GIMP_ITEM (drawable), error))
{
floating_sel = gimp_edit_paste (gimp_item_get_image (GIMP_ITEM (drawable)),
- drawable, GIMP_OBJECT (buffer),
+ drawable, paste,
paste_into ?
GIMP_PASTE_TYPE_FLOATING_INTO :
GIMP_PASTE_TYPE_FLOATING,
@@ -245,11 +247,18 @@ edit_paste_as_new_image_invoker (GimpProcedure *procedure,
GimpValueArray *return_vals;
GimpImage *image = NULL;
- GimpBuffer *buffer = gimp_get_clipboard_buffer (gimp);
+ GimpObject *paste = gimp_get_clipboard_object (gimp);
- if (buffer)
+ if (paste)
{
- image = gimp_image_new_from_buffer (gimp, NULL, buffer);
+ if (GIMP_IS_IMAGE (paste))
+ {
+ image = gimp_image_duplicate (GIMP_IMAGE (paste));
+ }
+ else if (GIMP_IS_BUFFER (paste))
+ {
+ image = gimp_image_new_from_buffer (gimp, NULL, GIMP_BUFFER (paste));
+ }
if (! image)
success = FALSE;
diff --git a/tools/pdbgen/pdb/edit.pdb b/tools/pdbgen/pdb/edit.pdb
index 7e4020d..62f7066 100644
--- a/tools/pdbgen/pdb/edit.pdb
+++ b/tools/pdbgen/pdb/edit.pdb
@@ -201,15 +201,15 @@ HELP
%invoke = (
code => <<CODE
{
- GimpBuffer *buffer = gimp_get_clipboard_buffer (gimp);
+ GimpObject *paste = gimp_get_clipboard_object (gimp);
- if (buffer &&
+ if (paste &&
gimp_pdb_item_is_attached (GIMP_ITEM (drawable), NULL,
GIMP_PDB_ITEM_CONTENT, error) &&
gimp_pdb_item_is_not_group (GIMP_ITEM (drawable), error))
{
floating_sel = gimp_edit_paste (gimp_item_get_image (GIMP_ITEM (drawable)),
- drawable, GIMP_OBJECT (buffer),
+ drawable, paste,
paste_into ?
GIMP_PASTE_TYPE_FLOATING_INTO :
GIMP_PASTE_TYPE_FLOATING,
@@ -244,11 +244,18 @@ HELP
%invoke = (
code => <<CODE
{
- GimpBuffer *buffer = gimp_get_clipboard_buffer (gimp);
+ GimpObject *paste = gimp_get_clipboard_object (gimp);
- if (buffer)
+ if (paste)
{
- image = gimp_image_new_from_buffer (gimp, NULL, buffer);
+ if (GIMP_IS_IMAGE (paste))
+ {
+ image = gimp_image_duplicate (GIMP_IMAGE (paste));
+ }
+ else if (GIMP_IS_BUFFER (paste))
+ {
+ image = gimp_image_new_from_buffer (gimp, NULL, GIMP_BUFFER (paste));
+ }
if (! image)
success = FALSE;
@@ -1018,7 +1025,9 @@ CODE
@headers = qw("libgimpconfig/gimpconfig.h"
"core/gimp.h"
"core/gimp-edit.h"
+ "core/gimpbuffer.h"
"core/gimpimage.h"
+ "core/gimpimage-duplicate.h"
"core/gimpimage-new.h"
"core/gimpprogress.h"
"gimppdb-utils.h"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]