mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-06 00:30:08 +00:00
quartz: move atom/pasteboard type conversions functions to GDK
(cherry picked from commit a269c2f8d2
)
This commit is contained in:
parent
40c5d37340
commit
6f607fc8b4
@ -55,6 +55,10 @@ typedef enum
|
|||||||
|
|
||||||
GdkOSXVersion gdk_quartz_osx_version (void);
|
GdkOSXVersion gdk_quartz_osx_version (void);
|
||||||
|
|
||||||
|
GdkAtom gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type);
|
||||||
|
NSString *gdk_quartz_target_to_pasteboard_type_libgtk_only (const gchar *target);
|
||||||
|
NSString *gdk_quartz_atom_to_pasteboard_type_libgtk_only (GdkAtom atom);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#define __GDKQUARTZ_H_INSIDE__
|
#define __GDKQUARTZ_H_INSIDE__
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "gdkselection.h"
|
#include "gdkselection.h"
|
||||||
#include "gdkproperty.h"
|
#include "gdkproperty.h"
|
||||||
|
#include "gdkquartz.h"
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
_gdk_quartz_display_set_selection_owner (GdkDisplay *display,
|
_gdk_quartz_display_set_selection_owner (GdkDisplay *display,
|
||||||
@ -171,3 +172,42 @@ _gdk_quartz_display_text_property_to_utf8_list (GdkDisplay *display,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GdkAtom
|
||||||
|
gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type)
|
||||||
|
{
|
||||||
|
if ([type isEqualToString:NSStringPboardType])
|
||||||
|
return gdk_atom_intern_static_string ("UTF8_STRING");
|
||||||
|
else if ([type isEqualToString:NSTIFFPboardType])
|
||||||
|
return gdk_atom_intern_static_string ("image/tiff");
|
||||||
|
else if ([type isEqualToString:NSColorPboardType])
|
||||||
|
return gdk_atom_intern_static_string ("application/x-color");
|
||||||
|
else if ([type isEqualToString:NSURLPboardType])
|
||||||
|
return gdk_atom_intern_static_string ("text/uri-list");
|
||||||
|
else
|
||||||
|
return gdk_atom_intern ([type UTF8String], FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
NSString *
|
||||||
|
gdk_quartz_target_to_pasteboard_type_libgtk_only (const char *target)
|
||||||
|
{
|
||||||
|
if (strcmp (target, "UTF8_STRING") == 0)
|
||||||
|
return NSStringPboardType;
|
||||||
|
else if (strcmp (target, "image/tiff") == 0)
|
||||||
|
return NSTIFFPboardType;
|
||||||
|
else if (strcmp (target, "application/x-color") == 0)
|
||||||
|
return NSColorPboardType;
|
||||||
|
else if (strcmp (target, "text/uri-list") == 0)
|
||||||
|
return NSURLPboardType;
|
||||||
|
else
|
||||||
|
return [NSString stringWithUTF8String:target];
|
||||||
|
}
|
||||||
|
|
||||||
|
NSString *
|
||||||
|
gdk_quartz_atom_to_pasteboard_type_libgtk_only (GdkAtom atom)
|
||||||
|
{
|
||||||
|
gchar *target = gdk_atom_name (atom);
|
||||||
|
NSString *ret = gdk_quartz_target_to_pasteboard_type_libgtk_only (target);
|
||||||
|
g_free (target);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -144,7 +144,7 @@ struct _GtkDragFindData
|
|||||||
selection_data.selection = GDK_NONE;
|
selection_data.selection = GDK_NONE;
|
||||||
selection_data.data = NULL;
|
selection_data.data = NULL;
|
||||||
selection_data.length = -1;
|
selection_data.length = -1;
|
||||||
selection_data.target = _gtk_quartz_pasteboard_type_to_atom (type);
|
selection_data.target = gdk_quartz_pasteboard_type_to_atom_libgtk_only (type);
|
||||||
selection_data.display = gdk_display_get_default ();
|
selection_data.display = gdk_display_get_default ();
|
||||||
|
|
||||||
if (gtk_target_list_find (info->target_list,
|
if (gtk_target_list_find (info->target_list,
|
||||||
|
@ -76,21 +76,6 @@ _gtk_quartz_create_image_from_pixbuf (GdkPixbuf *pixbuf)
|
|||||||
return nsimage;
|
return nsimage;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSString *
|
|
||||||
target_to_pasteboard_type (const char *target)
|
|
||||||
{
|
|
||||||
if (strcmp (target, "UTF8_STRING") == 0)
|
|
||||||
return NSStringPboardType;
|
|
||||||
else if (strcmp (target, "image/tiff") == 0)
|
|
||||||
return NSTIFFPboardType;
|
|
||||||
else if (strcmp (target, "application/x-color") == 0)
|
|
||||||
return NSColorPboardType;
|
|
||||||
else if (strcmp (target, "text/uri-list") == 0)
|
|
||||||
return NSURLPboardType;
|
|
||||||
else
|
|
||||||
return [NSString stringWithUTF8String:target];
|
|
||||||
}
|
|
||||||
|
|
||||||
NSSet *
|
NSSet *
|
||||||
_gtk_quartz_target_list_to_pasteboard_types (GtkTargetList *target_list)
|
_gtk_quartz_target_list_to_pasteboard_types (GtkTargetList *target_list)
|
||||||
{
|
{
|
||||||
@ -100,10 +85,8 @@ _gtk_quartz_target_list_to_pasteboard_types (GtkTargetList *target_list)
|
|||||||
for (list = target_list->list; list; list = list->next)
|
for (list = target_list->list; list; list = list->next)
|
||||||
{
|
{
|
||||||
GtkTargetPair *pair = list->data;
|
GtkTargetPair *pair = list->data;
|
||||||
gchar *target = gdk_atom_name (pair->target);
|
|
||||||
g_return_val_if_fail (pair->flags < 16, NULL);
|
g_return_val_if_fail (pair->flags < 16, NULL);
|
||||||
[set addObject:target_to_pasteboard_type (target)];
|
[set addObject:gdk_quartz_atom_to_pasteboard_type_libgtk_only (pair->target)];
|
||||||
g_free (target);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return set;
|
return set;
|
||||||
@ -118,27 +101,12 @@ _gtk_quartz_target_entries_to_pasteboard_types (const GtkTargetEntry *targets,
|
|||||||
|
|
||||||
for (i = 0; i < n_targets; i++)
|
for (i = 0; i < n_targets; i++)
|
||||||
{
|
{
|
||||||
[set addObject:target_to_pasteboard_type (targets[i].target)];
|
[set addObject:gdk_quartz_target_to_pasteboard_type_libgtk_only (targets[i].target)];
|
||||||
}
|
}
|
||||||
|
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
|
|
||||||
GdkAtom
|
|
||||||
_gtk_quartz_pasteboard_type_to_atom (NSString *type)
|
|
||||||
{
|
|
||||||
if ([type isEqualToString:NSStringPboardType])
|
|
||||||
return gdk_atom_intern_static_string ("UTF8_STRING");
|
|
||||||
else if ([type isEqualToString:NSTIFFPboardType])
|
|
||||||
return gdk_atom_intern_static_string ("image/tiff");
|
|
||||||
else if ([type isEqualToString:NSColorPboardType])
|
|
||||||
return gdk_atom_intern_static_string ("application/x-color");
|
|
||||||
else if ([type isEqualToString:NSURLPboardType])
|
|
||||||
return gdk_atom_intern_static_string ("text/uri-list");
|
|
||||||
else
|
|
||||||
return gdk_atom_intern ([type UTF8String], FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
GList *
|
GList *
|
||||||
_gtk_quartz_pasteboard_types_to_atom_list (NSArray *array)
|
_gtk_quartz_pasteboard_types_to_atom_list (NSArray *array)
|
||||||
{
|
{
|
||||||
@ -150,7 +118,7 @@ _gtk_quartz_pasteboard_types_to_atom_list (NSArray *array)
|
|||||||
|
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
GdkAtom atom = _gtk_quartz_pasteboard_type_to_atom ([array objectAtIndex:i]);
|
GdkAtom atom = gdk_quartz_pasteboard_type_to_atom_libgtk_only ([array objectAtIndex:i]);
|
||||||
|
|
||||||
result = g_list_prepend (result, GDK_ATOM_TO_POINTER (atom));
|
result = g_list_prepend (result, GDK_ATOM_TO_POINTER (atom));
|
||||||
}
|
}
|
||||||
@ -266,20 +234,17 @@ _gtk_quartz_set_selection_data_for_pasteboard (NSPasteboard *pasteboard,
|
|||||||
GtkSelectionData *selection_data)
|
GtkSelectionData *selection_data)
|
||||||
{
|
{
|
||||||
NSString *type;
|
NSString *type;
|
||||||
gchar *target;
|
|
||||||
GdkDisplay *display;
|
GdkDisplay *display;
|
||||||
gint format;
|
gint format;
|
||||||
const guchar *data;
|
const guchar *data;
|
||||||
NSUInteger length;
|
NSUInteger length;
|
||||||
|
|
||||||
target = gdk_atom_name (gtk_selection_data_get_target (selection_data));
|
|
||||||
display = gtk_selection_data_get_display (selection_data);
|
display = gtk_selection_data_get_display (selection_data);
|
||||||
format = gtk_selection_data_get_format (selection_data);
|
format = gtk_selection_data_get_format (selection_data);
|
||||||
data = gtk_selection_data_get_data (selection_data);
|
data = gtk_selection_data_get_data (selection_data);
|
||||||
length = gtk_selection_data_get_length (selection_data);
|
length = gtk_selection_data_get_length (selection_data);
|
||||||
|
|
||||||
type = target_to_pasteboard_type (target);
|
type = gdk_quartz_atom_to_pasteboard_type_libgtk_only (gtk_selection_data_get_target (selection_data));
|
||||||
g_free (target);
|
|
||||||
|
|
||||||
if ([type isEqualTo:NSStringPboardType])
|
if ([type isEqualTo:NSStringPboardType])
|
||||||
[pasteboard setString:[NSString stringWithUTF8String:(const char *)data]
|
[pasteboard setString:[NSString stringWithUTF8String:(const char *)data]
|
||||||
|
@ -29,7 +29,6 @@ NSSet *_gtk_quartz_target_entries_to_pasteboard_types (const GtkTargetEntry *t
|
|||||||
guint n_targets);
|
guint n_targets);
|
||||||
|
|
||||||
GList *_gtk_quartz_pasteboard_types_to_atom_list (NSArray *array);
|
GList *_gtk_quartz_pasteboard_types_to_atom_list (NSArray *array);
|
||||||
GdkAtom _gtk_quartz_pasteboard_type_to_atom (NSString *type);
|
|
||||||
|
|
||||||
GtkSelectionData *_gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
|
GtkSelectionData *_gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
|
||||||
GdkAtom target,
|
GdkAtom target,
|
||||||
|
@ -20,5 +20,8 @@ typedef int NSTrackingRectTag;
|
|||||||
@interface NSWindow {}
|
@interface NSWindow {}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface NSString {}
|
||||||
|
@end
|
||||||
|
|
||||||
@protocol NSDraggingInfo
|
@protocol NSDraggingInfo
|
||||||
@end
|
@end
|
||||||
|
Loading…
Reference in New Issue
Block a user