summaryrefslogtreecommitdiff
path: root/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c')
-rw-r--r--native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
index 0b076f864..3b54e839d 100644
--- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
+++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
@@ -92,7 +92,6 @@ Java_gnu_java_awt_peer_gtk_GtkClipboard_initNativeState (JNIEnv *env,
jstring image,
jstring files)
{
- GdkDisplay* display;
jboolean can_cache;
gtk_clipboard_class = clz;
@@ -137,9 +136,11 @@ Java_gnu_java_awt_peer_gtk_GtkClipboard_initNativeState (JNIEnv *env,
cp_gtk_clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
cp_gtk_selection = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
- display = gtk_clipboard_get_display (cp_gtk_clipboard);
+
/* Check for support for clipboard owner changes. */
#if GTK_MINOR_VERSION > 4
+ GdkDisplay* display;
+ display = gtk_clipboard_get_display (cp_gtk_clipboard);
if (gdk_display_supports_selection_notification (display))
{
g_signal_connect (cp_gtk_clipboard, "owner-change",
@@ -183,7 +184,7 @@ clipboard_get_func (GtkClipboard *clipboard,
jint len;
jbyte *barray;
- target_name = gdk_atom_name (selection->target);
+ target_name = gdk_atom_name (gtk_selection_data_get_target(selection));
if (target_name == NULL)
return;
target_string = (*env)->NewStringUTF (env, target_name);
@@ -202,7 +203,7 @@ clipboard_get_func (GtkClipboard *clipboard,
barray = (*env)->GetByteArrayElements(env, bytes, NULL);
if (barray == NULL)
return;
- gtk_selection_data_set (selection, selection->target, 8,
+ gtk_selection_data_set (selection, gtk_selection_data_get_target(selection), 8,
(guchar *) barray, len);
(*env)->ReleaseByteArrayElements(env, bytes, barray, 0);
@@ -324,9 +325,12 @@ Java_gnu_java_awt_peer_gtk_GtkClipboard_advertiseContent
#endif
{
GtkTargetList *target_list;
+ #if GTK_MAJOR_VERSION == 2
GList *list;
+ #endif
GtkTargetEntry *targets;
gint n, i;
+
gdk_threads_enter ();
target_list = gtk_target_list_new (NULL, 0);
@@ -371,9 +375,15 @@ Java_gnu_java_awt_peer_gtk_GtkClipboard_advertiseContent
/* Turn list into a target table. */
+
+ #if GTK_MAJOR_VERSION == 3
+ n = 0;
+ #elif GTK_MAJOR_VERSION == 2
n = g_list_length (target_list->list);
+ #endif
if (n > 0)
{
+ #if GTK_MAJOR_VERSION == 2
targets = g_new (GtkTargetEntry, n);
for (list = target_list->list, i = 0;
list != NULL;
@@ -384,7 +394,9 @@ Java_gnu_java_awt_peer_gtk_GtkClipboard_advertiseContent
targets[i].flags = pair->flags;
targets[i].info = pair->info;
}
-
+ #endif
+ targets = gtk_target_table_new_from_list (target_list, &n);
+
/* Set the targets plus callback functions and ask for the clipboard
to be stored when the application exists if supported. */
if ((*env)->IsSameObject(env, instance, cp_gtk_clipboard_instance))