private void HandlerPintaCoreActionsEditCopyActivated(object sender, EventArgs e)
{
Document doc = PintaCore.Workspace.ActiveDocument;
Gtk.Clipboard cb = Gtk.Clipboard.Get(Gdk.Atom.Intern("CLIPBOARD", false));
if (PintaCore.Tools.CurrentTool?.DoHandleCopy(doc, cb) == true)
{
return;
}
PintaCore.Tools.Commit();
using (ImageSurface src = doc.Layers.GetClippedLayer(doc.Layers.CurrentUserLayerIndex)) {
Gdk.Rectangle rect = doc.GetSelectedBounds(true);
if (rect.Width == 0 || rect.Height == 0)
{
return;
}
ImageSurface dest = CairoExtensions.CreateImageSurface(Format.Argb32, rect.Width, rect.Height);
using (Context g = new Context(dest)) {
g.SetSourceSurface(src, -rect.X, -rect.Y);
g.Paint();
}
cb.Image = dest.ToPixbuf();
(dest as IDisposable).Dispose();
}
}