New pop-up menu action "Copy image to clipboard"
authorHrvoje Niksic <hniksic@gmail.com>
Mon, 28 Dec 2020 22:37:58 +0000 (23:37 +0100)
committerHrvoje Niksic <hniksic@gmail.com>
Mon, 28 Dec 2020 22:53:12 +0000 (23:53 +0100)
src/layout_image.c

index cc61fef..8983091 100644 (file)
@@ -583,6 +583,17 @@ static void li_pop_menu_copy_path_unquoted_cb(GtkWidget *widget, gpointer data)
        file_util_copy_path_to_clipboard(layout_image_get_fd(lw), FALSE);
 }
 
+static void li_pop_menu_copy_image_cb(GtkWidget *widget, gpointer data)
+{
+       LayoutWindow *lw = data;
+       ImageWindow *imd = lw->image;
+
+       GdkPixbuf *pixbuf;
+       pixbuf = image_get_pixbuf(imd);
+       if (!pixbuf) return;
+       gtk_clipboard_set_image(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), pixbuf);
+}
+
 static void li_pop_menu_move_cb(GtkWidget *widget, gpointer data)
 {
        LayoutWindow *lw = data;
@@ -773,6 +784,7 @@ static GtkWidget *layout_image_pop_menu(LayoutWindow *lw)
        if (!path) gtk_widget_set_sensitive(item, FALSE);
        item = menu_item_add(menu, _("_Copy path"), G_CALLBACK(li_pop_menu_copy_path_cb), lw);
        item = menu_item_add(menu, _("_Copy path unquoted"), G_CALLBACK(li_pop_menu_copy_path_unquoted_cb), lw);
+       item = menu_item_add(menu, _("Copy _image"), G_CALLBACK(li_pop_menu_copy_image_cb), lw);
        if (!path) gtk_widget_set_sensitive(item, FALSE);
        menu_item_add_divider(menu);