classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [cp-patches] FYI: Fix awt.datatransfer fro gtk+-2.4


From: Mark Wielaard
Subject: Re: [cp-patches] FYI: Fix awt.datatransfer fro gtk+-2.4
Date: Sun, 04 Sep 2005 02:03:51 +0200

On Sun, 2005-09-04 at 01:41 +0200, Mark Wielaard wrote:
> 2005-09-03  Mark Wielaard  <address@hidden>
> 
>     Fixes bug #23701
>     * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
>     (clipboard_owner_change_cb): Only used when GTK_MINOR_VERSION > 4.
>     (Java_gnu_java_awt_peer_gtk_GtkClipboard_initNativeState):
>     Only request owner-change events for GTK_MINOR_VERSION > 4.
>     (clipboard_get_func): Only handle pixbuf and uri when
>     GTK_MINOR_VERSION > 4.
>     (Java_gnu_java_awt_peer_gtk_GtkClipboard_advertiseContent): Only call
>     gtk_target_list_add_* functions when GTK_MINOR_VERSION > 4. Similar
>     for gtk_clipboard_set_can_store.
>     * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
>     (Java_gnu_java_awt_peer_gtk_GtkImage_drawPixelsScaledFlipped): Mark
>     flipx and flipy unused for GTK_MINOR_VERSION <= 4.
>     * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c
>     (clipboard_targets_received): Don't handle images for
>     GTK_MINOR_VERSION <= 4.
>     (Java_gnu_java_awt_peer_gtk_GtkSelection_requestImage): Likewise.
>     (clipboard_uris_received): Likewise for text/uri-list.
>     (Java_gnu_java_awt_peer_gtk_GtkSelection_requestURIs): Likewise.

Woops, didn't attach the full patch. Here it is the rest.

Cheers,

Mark
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
===================================================================
RCS file: 
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c,v
retrieving revision 1.15
diff -u -r1.15 gnu_java_awt_peer_gtk_GtkClipboard.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c    22 Aug 2005 
10:36:14 -0000      1.15
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c    4 Sep 2005 
00:01:19 -0000
@@ -67,6 +67,8 @@
 static jmethodID provideImageID;
 static jmethodID provideURIsID;
 
+/* Called when clipboard owner changes. Used to update available targets. */
+#if GTK_MINOR_VERSION > 4
 static void
 clipboard_owner_change_cb (GtkClipboard *clipboard __attribute__((unused)),
                           GdkEvent *event __attribute__((unused)),
@@ -79,6 +81,7 @@
     (*env)->CallStaticVoidMethod (env, gtk_clipboard_class,
                                  setSystemContentsID);
 }
+#endif
 
 JNIEXPORT jboolean JNICALL 
 Java_gnu_java_awt_peer_gtk_GtkClipboard_initNativeState (JNIEnv *env,
@@ -105,6 +108,8 @@
   cp_gtk_clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
 
   display = gtk_clipboard_get_display (cp_gtk_clipboard);
+  /* Check for support for clipboard owner changes. */
+#if GTK_MINOR_VERSION > 4
   if (gdk_display_supports_selection_notification (display))
     {
       g_signal_connect (cp_gtk_clipboard, "owner-change",
@@ -114,6 +119,7 @@
       can_cache = JNI_TRUE;
     }
   else
+#endif
     can_cache = JNI_FALSE;
   gdk_threads_leave ();
 
@@ -180,6 +186,8 @@
       gtk_selection_data_set_text (selection, text, len);
       (*env)->ReleaseStringUTFChars (env, string, text);
     }
+  /* Images and URIs/Files support only available with gtk+2.6 or higher. */
+#if GTK_MINOR_VERSION > 4
   else if (info == IMAGE_TARGET)
     {
       jobject gtkimage;
@@ -246,6 +254,7 @@
        free (list[i]);
       JCL_free (env, list);
     }
+#endif
 }
 
 static void
@@ -266,9 +275,13 @@
 (JNIEnv *env,
  jobject instance,
  jobjectArray mime_array,
- jboolean add_text,
+#if GTK_MINOR_VERSION > 4
+ jboolean add_text, jboolean add_images, jboolean add_uris)
+#else
+ jboolean add_text __attribute__((unused)),
  jboolean add_images __attribute__((unused)),
  jboolean add_uris __attribute__((unused)))
+#endif
 {
   GtkTargetList *target_list;
   GList *list;
@@ -302,12 +315,20 @@
     }
 
   /* Add extra targets that gtk+ can provide/translate for us. */
+#if GTK_MINOR_VERSION > 4
   if (add_text)
     gtk_target_list_add_text_targets (target_list, TEXT_TARGET);
   if (add_images)
     gtk_target_list_add_image_targets (target_list, IMAGE_TARGET, TRUE);
   if (add_uris)
     gtk_target_list_add_uri_targets (target_list, URI_TARGET);
+#else
+  if (add_text)
+    gtk_target_list_add (target_list,
+                        gdk_atom_intern ("STRING", FALSE),
+                        0, TEXT_TARGET);
+#endif
+
 
   /* Turn list into a target table. */
   n = g_list_length (target_list->list);
@@ -325,7 +346,7 @@
        }
 
       /* Set the targets plus callback functions and ask for the clipboard
-        to be stored when the application exists. */
+        to be stored when the application exists if supported. */
       current_selection++;
       if (gtk_clipboard_set_with_data (cp_gtk_clipboard, targets, n,
                                       clipboard_get_func,
@@ -365,7 +386,9 @@
              if (provideURIsID == NULL)
                return;
            }
+#if GTK_MINOR_VERSION > 4
          gtk_clipboard_set_can_store (cp_gtk_clipboard, NULL, 0);
+#endif
        }
       else
        {
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c
===================================================================
RCS file: 
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c,v
retrieving revision 1.15
diff -u -r1.15 gnu_java_awt_peer_gtk_GtkImage.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c        2 Sep 2005 
06:36:58 -0000       1.15
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c        4 Sep 2005 
00:01:19 -0000
@@ -429,7 +429,12 @@
 Java_gnu_java_awt_peer_gtk_GtkImage_drawPixelsScaledFlipped 
 (JNIEnv *env, jobject obj, jobject gc_obj,
  jint bg_red, jint bg_green, jint bg_blue, 
+#if GTK_MINOR_VERSION > 4
  jboolean flipx, jboolean flipy,
+#else
+ jboolean flipx __attribute__((unused)),
+ jboolean flipy __attribute__((unused)),
+#endif
  jint srcx, jint srcy, jint srcwidth, jint srcheight, 
  jint dstx, jint dsty, jint dstwidth, jint dstheight, 
  jboolean composite)

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]