diff options
author | Corey Berla <corey@berla.me> | 2022-09-20 15:18:13 -0700 |
---|---|---|
committer | António Fernandes <antoniof@gnome.org> | 2023-01-08 17:47:09 +0000 |
commit | 588554e0aa394f181b4247fbb658c3ad318935f3 (patch) | |
tree | 4ba9e409e92a6b2cad03f72ca98b305760913738 /src/nautilus-files-view.c | |
parent | ed96b0a87ca6ecb70fd1baa9bd1e6d91201178c7 (diff) | |
download | nautilus-588554e0aa394f181b4247fbb658c3ad318935f3.tar.gz |
files-view: Allow pasting GDK_TYPE_TEXTURE
Allow pasting raw images from the clipboard to a file within
Nautilus. We just get the raw data, so generate a filename
automatically. Just as with other copy operations, the select
the file after creation.
Diffstat (limited to 'src/nautilus-files-view.c')
-rw-r--r-- | src/nautilus-files-view.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index 68aa37593..1cbde20a7 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -2777,15 +2777,26 @@ paste_files (NautilusFilesView *view, PasteCallbackData *data; GdkClipboard *clipboard; GdkContentFormats *formats; - char *uri; + gchar *real_dest_uri; NautilusFilesViewPrivate *priv = nautilus_files_view_get_instance_private (view); clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view)); formats = gdk_clipboard_get_formats (clipboard); - uri = dest_uri != NULL ? dest_uri : nautilus_files_view_get_backing_uri (view); + real_dest_uri = dest_uri != NULL ? dest_uri : nautilus_files_view_get_backing_uri (view); + + if (gdk_content_formats_contain_gtype (formats, GDK_TYPE_TEXTURE)) + { + nautilus_file_operations_paste_image_from_clipboard (GTK_WIDGET (view), + NULL, + real_dest_uri, + copy_move_done_callback, + pre_copy_move (view)); + return; + } + data = g_new0 (PasteCallbackData, 1); - data->dest_uri = uri; + data->dest_uri = real_dest_uri; data->as_link = as_link; data->view = view; @@ -7222,7 +7233,8 @@ update_actions_state_for_clipboard_targets (NautilusFilesView *view) formats = gdk_clipboard_get_formats (clipboard); is_data_copied = gdk_content_formats_contain_gtype (formats, NAUTILUS_TYPE_CLIPBOARD) || gdk_content_formats_contain_gtype (formats, GDK_TYPE_FILE_LIST) || - gdk_content_formats_contain_gtype (formats, G_TYPE_FILE); + gdk_content_formats_contain_gtype (formats, G_TYPE_FILE) || + gdk_content_formats_contain_gtype (formats, GDK_TYPE_TEXTURE); action = g_action_map_lookup_action (G_ACTION_MAP (priv->view_action_group), "paste"); |