This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gui] [PATCH] Implement GtkFramePeer.setIconImage()


Hello,

I committed the following patch to the java-gui-branch.  It implements
GtkFramePeer.setIconImage().

-David Jee

2004-07-30  David Jee  <djee@redhat.com>

        * gnu/java/awt/peer/gtk/GtkFramePeer.java
        (create): Set the icon image.
        (nativeSetIconImage): New native method declaration.
        (setIconImage): Implement.
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
        (nativeSetIconImage): New function.


Index: gnu/java/awt/peer/gtk/GtkFramePeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java,v
retrieving revision 1.17.2.1
diff -u -r1.17.2.1 GtkFramePeer.java
--- gnu/java/awt/peer/gtk/GtkFramePeer.java	30 Jul 2004 09:47:57 -0000	1.17.2.1
+++ gnu/java/awt/peer/gtk/GtkFramePeer.java	30 Jul 2004 17:47:17 -0000
@@ -143,11 +143,15 @@
 
     setTitle (frame.getTitle ());
     setResizable (frame.isResizable ());
+    setIconImage(frame.getIconImage());
   }
 
+  native void nativeSetIconImage (GdkPixbufDecoder decoder);
   public void setIconImage (Image image) 
   {
-      /* TODO: Waiting on Toolkit Image routines */
+      GtkImage img = (GtkImage) image;
+      if (img.isLoaded() && img.getSource() instanceof GdkPixbufDecoder)
+        nativeSetIconImage((GdkPixbufDecoder) img.getSource());
   }
 
   public Graphics getGraphics ()
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,v
retrieving revision 1.24.2.11
diff -u -r1.24.2.11 gnu_java_awt_peer_gtk_GtkWindowPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c	30 Jul 2004 09:47:58 -0000	1.24.2.11
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c	30 Jul 2004 17:47:17 -0000
@@ -44,6 +44,8 @@
 #include <gdk/gdkx.h>
 #include <X11/Xatom.h>
 
+struct state_table *native_pixbufdecoder_state_table;
+
 /* FIXME: we're currently seeing the double-activation that occurs
    with metacity and GTK.  See
    http://bugzilla.gnome.org/show_bug.cgi?id=140977 for details. */
@@ -535,6 +537,29 @@
   gdk_threads_leave ();
 }
 
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkFramePeer_nativeSetIconImage
+  (JNIEnv *env, jobject obj, jobject decoder)
+{
+  void *ptr;
+  GdkPixbufLoader *loader = NULL;
+  GdkPixbuf *pixbuf = NULL;
+
+  ptr = NSA_GET_PTR (env, obj);
+
+  loader = get_state (env, decoder, native_pixbufdecoder_state_table);
+  g_assert (loader != NULL);
+
+  gdk_threads_enter ();
+
+  pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
+  g_assert (pixbuf != NULL);
+
+  gtk_window_set_icon (GTK_WINDOW (ptr), pixbuf);
+
+  gdk_threads_leave ();
+}
+
 static void
 window_get_frame_extents (GtkWidget *window,
                           int *top, int *left, int *bottom, int *right)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]