PNG support in copy and paste; NSPasteboardTypePNG XG_MIME_PNG

This commit is contained in:
Riccardo Mottola 2024-03-05 18:00:30 +01:00
parent 707c5239e3
commit c787d26af2

View file

@ -853,6 +853,11 @@ static int xFixesEventBase;
NSDebugLLog(@"Pbs", @"pasteboard: provideDataForType: - requestData XG_MIME_TIFF");
[self requestData: (xType = XG_MIME_TIFF)];
}
else if ([type isEqual: NSPasteboardTypePNG])
{
NSDebugLLog(@"Pbs", @"pasteboard: provideDataForType: - requestData XG_MIME_PNG");
[self requestData: XG_MIME_PNG];
}
// FIXME: Support more types
else
{
@ -1326,6 +1331,10 @@ xErrorHandler(Display *d, XErrorEvent *e)
{
[self setData: md];
}
else if (actual_type == XG_MIME_PNG)
{
[self setData: md];
}
else if (actual_type == XA_ATOM)
{
// Used when requesting TARGETS to get available types
@ -1405,7 +1414,7 @@ xErrorHandler(Display *d, XErrorEvent *e)
{
unsigned numTypes = 0;
// ATTENTION: Increase this array when adding more types
Atom xTypes[17];
Atom xTypes[18];
/*
* The requestor wants a list of the types we can supply it with.
@ -1446,6 +1455,11 @@ xErrorHandler(Display *d, XErrorEvent *e)
xTypes[numTypes++] = XG_MIME_TIFF;
}
if ([types containsObject: NSPasteboardTypePNG])
{
xTypes[numTypes++] = XG_MIME_PNG;
}
xType = XA_ATOM;
format = 32;
data = [NSData dataWithBytes: (const void*)xTypes
@ -1534,6 +1548,11 @@ xErrorHandler(Display *d, XErrorEvent *e)
xEvent->target = XG_MIME_TIFF;
[self xProvideSelection: xEvent];
}
else if ([types containsObject: NSPasteboardTypePNG])
{
xEvent->target = XG_MIME_PNG;
[self xProvideSelection: xEvent];
}
}
else if (xEvent->target == XG_MULTIPLE)
{
@ -1672,6 +1691,14 @@ xErrorHandler(Display *d, XErrorEvent *e)
format = 8;
numItems = [data length];
}
else if ((xEvent->target == XG_MIME_PNG)
&& [types containsObject: NSPasteboardTypePNG])
{
data = [_pb dataForType: NSPasteboardTypePNG];
xType = xEvent->target;
format = 8;
numItems = [data length];
}
// FIXME: Support more types
else
{