This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[gui] [PATCH] Implement GtkFramePeer.setIconImage()
- From: David Jee <djee at redhat dot com>
- To: java-patches at gcc dot gnu dot org
- Date: Fri, 30 Jul 2004 13:59:28 -0400
- Subject: [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)