From ebf7eb809d3e9173d9c1628645b2ba7d7e1c1b59 Mon Sep 17 00:00:00 2001 From: z4ziggy Date: Thu, 20 May 2021 07:54:13 +0300 Subject: [PATCH] copy image to clipboard --- src/image_viewer.c | 7 +++++++ src/image_viewer.h | 4 ++++ src/main_window.c | 27 +++++++++++++++++++++++++++ src/main_window_ui.xml | 3 +++ 4 files changed, 41 insertions(+) diff --git a/src/image_viewer.c b/src/image_viewer.c index 90e8f059..365f353b 100644 --- a/src/image_viewer.c +++ b/src/image_viewer.c @@ -1895,6 +1895,13 @@ rstto_image_viewer_set_scale (RsttoImageViewer *viewer, gdouble scale) FALSE); } +GdkPixbuf * +rstto_image_viewer_get_pixbuf ( + RsttoImageViewer *viewer) +{ + 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 7ce06151..8d13d774 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 58536dfb..b9114344 100644 --- a/src/main_window.c +++ b/src/main_window.c @@ -297,6 +297,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, @@ -442,6 +447,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"), @@ -1703,6 +1714,7 @@ rstto_main_activate_file_menu_actions (RsttoMainWindow *window, gboolean activat //"/main-menu/file-menu/print", "/main-menu/file-menu/properties", "/main-menu/file-menu/close", + "/main-menu/edit-menu/copy-image", "/main-menu/edit-menu/delete" }; @@ -1769,6 +1781,7 @@ rstto_main_activate_popup_menu_actions (RsttoMainWindow *window, gboolean activa const gchar *actions[] = { "/image-viewer-menu/close", "/image-viewer-menu/open-with-menu", + "/image-viewer-menu/copy-image", "/image-viewer-menu/zoom-in", "/image-viewer-menu/zoom-out", "/image-viewer-menu/zoom-100", @@ -4468,6 +4481,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); + if (pixbuf) { + gtk_clipboard_set_image(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), 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 600da606..26fdf3e0 100644 --- a/src/main_window_ui.xml +++ b/src/main_window_ui.xml @@ -16,6 +16,8 @@ + + @@ -106,6 +108,7 @@ + -- GitLab