diff --git a/src/image_viewer.c b/src/image_viewer.c index ebacd7304042a7c78ee3ca14764b55d829f575e8..4c818718f62dc6a8ea655e9ca73b80793f18a555 100644 --- a/src/image_viewer.c +++ b/src/image_viewer.c @@ -1901,6 +1901,14 @@ rstto_image_viewer_set_scale (RsttoImageViewer *viewer, gdouble scale) FALSE); } +GdkPixbuf * +rstto_image_viewer_get_pixbuf ( + RsttoImageViewer *viewer) +{ + g_object_ref(viewer->priv->pixbuf); + return viewer->priv->pixbuf; +} + gdouble rstto_image_viewer_get_scale (RsttoImageViewer *viewer) { diff --git a/src/image_viewer.h b/src/image_viewer.h index 7ce06151fcd730937c848d11eb42547f7b93ba6d..8d13d774f6e6976bfc9f38b9cefe404d0228e039 100644 --- a/src/image_viewer.h +++ b/src/image_viewer.h @@ -89,6 +89,10 @@ rstto_image_viewer_set_scale ( RsttoImageViewer *viewer, gdouble scale); +GdkPixbuf * +rstto_image_viewer_get_pixbuf ( + RsttoImageViewer *viewer); + gdouble rstto_image_viewer_get_scale ( RsttoImageViewer *viewer); diff --git a/src/main_window.c b/src/main_window.c index 7978f79576462806b1fff46201615131b337761d..2f24969dd41b5e5799774e664206fbeb4cb87b80 100644 --- a/src/main_window.c +++ b/src/main_window.c @@ -300,6 +300,11 @@ cb_rstto_main_window_preferences ( GtkWidget *widget, RsttoMainWindow *window); +static void +copy_image ( + GtkWidget *widget, + RsttoMainWindow *window); + static void cb_rstto_main_window_clear_private_data ( GtkWidget *widget, @@ -445,6 +450,12 @@ static GtkActionEntry action_entries[] = NULL, NULL, NULL, }, + { "copy-image", + NULL, + N_ ("_Copy image to clipboard"), + "C", + NULL, + G_CALLBACK (copy_image), }, { "open-with-menu", NULL, N_ ("_Open with"), @@ -4456,6 +4467,20 @@ rstto_main_window_launch_editor_chooser ( g_list_free (files); } + +static void +copy_image ( + GtkWidget *widget, + RsttoMainWindow *window) +{ + GdkPixbuf *pixbuf; + RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER(window->priv->image_viewer); + pixbuf = rstto_image_viewer_get_pixbuf(viewer); + gtk_clipboard_set_image(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), pixbuf); + //gtk_clipboard_set_image(gtk_clipboard_get(GDK_SELECTION_PRIMARY), pixbuf); + g_object_unref (pixbuf); +} + static void cb_rstto_main_window_clear_private_data ( GtkWidget *widget, diff --git a/src/main_window_ui.xml b/src/main_window_ui.xml index 600da60619ff5e7b5fd2ec6b8d327a5157a0fa70..242946daef0156747c87f727662e4d50deae4b5e 100644 --- a/src/main_window_ui.xml +++ b/src/main_window_ui.xml @@ -16,6 +16,8 @@ + +