Fix Cocoa pasteboard constants for gtk.

Corresponds to gdkselection-quartz changes in f30ed5ddc.
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/6480
This commit is contained in:
John Ralls 2024-02-27 12:31:16 -08:00
parent 687ec22393
commit 7e9676d658
3 changed files with 23 additions and 24 deletions

View File

@ -27,6 +27,20 @@
#include <gdk/gdk.h>
#include <gdk/quartz/gdkquartz.h>
#if MAC_OS_X_VERSION_MIN_REQUIRED < 101400
#define GDK_QUARTZ_FILE_PBOARD_TYPE NSURLPboardType
#define GDK_QUARTZ_URL_PBOARD_TYPE NSURLPboardType
#define GDK_QUARTZ_COLOR_PBOARD_TYPE NSColorPboardType
#define GDK_QUARTZ_STRING_PBOARD_TYPE NSStringPboardType
#define GDK_QUARTZ_TIFF_PBOARD_TYPE NSTIFFPboardType
#else
#define GDK_QUARTZ_FILE_PBOARD_TYPE NSPasteboardTypeFileURL
#define GDK_QUARTZ_URL_PBOARD_TYPE NSPasteboardTypeURL
#define GDK_QUARTZ_COLOR_PBOARD_TYPE NSPasteboardTypeColor
#define GDK_QUARTZ_STRING_PBOARD_TYPE NSPasteboardTypeString
#define GDK_QUARTZ_TIFF_PBOARD_TYPE NSPasteboardTypeTIFF
#endif
/* Drag and Drop/Clipboard */
GDK_AVAILABLE_IN_ALL
GdkAtom gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type);

View File

@ -174,19 +174,6 @@ _gdk_quartz_display_text_property_to_utf8_list (GdkDisplay *display,
}
}
#if MAC_OS_X_VERSION_MIN_REQUIRED < 101400
#define GDK_QUARTZ_URL_PBOARD_TYPE NSURLPboardType
#define GDK_QUARTZ_COLOR_PBOARD_TYPE NSColorPboardType
#define GDK_QUARTZ_STRING_PBOARD_TYPE NSStringPboardType
#define GDK_QUARTZ_TIFF_PBOARD_TYPE NSTIFFPboardType
#else
#define GDK_QUARTZ_FILE_PBOARD_TYPE NSPasteboardTypeFileURL
#define GDK_QUARTZ_URL_PBOARD_TYPE NSPasteboardTypeURL
#define GDK_QUARTZ_COLOR_PBOARD_TYPE NSPasteboardTypeColor
#define GDK_QUARTZ_STRING_PBOARD_TYPE NSPasteboardTypeString
#define GDK_QUARTZ_TIFF_PBOARD_TYPE NSPasteboardTypeTIFF
#endif
GdkAtom
gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type)
{
@ -196,12 +183,9 @@ gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type)
return gdk_atom_intern_static_string ("image/tiff");
else if ([type isEqualToString:GDK_QUARTZ_COLOR_PBOARD_TYPE])
return gdk_atom_intern_static_string ("application/x-color");
else if ([type isEqualToString:GDK_QUARTZ_URL_PBOARD_TYPE])
else if ([type isEqualToString:GDK_QUARTZ_URL_PBOARD_TYPE] ||
[type isEqualToString:GDK_QUARTZ_FILE_PBOARD_TYPE])
return gdk_atom_intern_static_string ("text/uri-list");
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
else if ([type isEqualToString:GDK_QUARTZ_FILE_PBOARD_TYPE])
return gdk_atom_intern_static_string ("text/uri-list");
#endif
else
return gdk_atom_intern ([type UTF8String], FALSE);
}

View File

@ -186,7 +186,7 @@ _gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
selection_data->display = gdk_display_get_default ();
if (target == gdk_atom_intern_static_string ("UTF8_STRING"))
{
NSString *s = [pasteboard stringForType:NSStringPboardType];
NSString *s = [pasteboard stringForType:GDK_QUARTZ_STRING_PBOARD_TYPE];
if (s)
{
@ -237,7 +237,8 @@ _gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
gtk_selection_data_set_uris (selection_data, uris);
g_free (uris);
}
else if ([[pasteboard types] containsObject:NSURLPboardType])
else if ([[pasteboard types] containsObject:GDK_QUARTZ_URL_PBOARD_TYPE] ||
[[pasteboard types] containsObject:GDK_QUARTZ_FILE_PBOARD_TYPE])
{
gchar *uris[2];
NSURL *url = [NSURL URLFromPasteboard:pasteboard];
@ -258,7 +259,7 @@ _gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
name = gdk_atom_name (target);
if (strcmp (name, "image/tiff") == 0)
data = [pasteboard dataForType:NSTIFFPboardType];
data = [pasteboard dataForType:GDK_QUARTZ_TIFF_PBOARD_TYPE];
else
data = [pasteboard dataForType:[NSString stringWithUTF8String:name]];
@ -292,10 +293,10 @@ _gtk_quartz_set_selection_data_for_pasteboard (NSPasteboard *pasteboard,
type = gdk_quartz_atom_to_pasteboard_type_libgtk_only (gtk_selection_data_get_target (selection_data));
if ([type isEqualTo:NSStringPboardType])
if ([type isEqualTo:GDK_QUARTZ_STRING_PBOARD_TYPE])
[pasteboard setString:[NSString stringWithUTF8String:(const char *)data]
forType:type];
else if ([type isEqualTo:NSColorPboardType])
else if ([type isEqualTo:GDK_QUARTZ_COLOR_PBOARD_TYPE])
{
guint16 *color = (guint16 *)data;
float red, green, blue, alpha;
@ -309,7 +310,7 @@ _gtk_quartz_set_selection_data_for_pasteboard (NSPasteboard *pasteboard,
nscolor = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha];
[nscolor writeToPasteboard:pasteboard];
}
else if ([type isEqualTo:NSURLPboardType])
else if ([type isEqualTo:GDK_QUARTZ_URL_PBOARD_TYPE])
{
gchar **uris;