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]

[PATCH] fix setLabel for Button peers


Hello,

Here is a patch that fixes how we set labels for Button peers.  Current
implementation uses the generic set() method in GtkComponentPeer to
change the "label" property of the Button peer.  This has the side
effect of wiping out the peer's font style.  This patch works around
this by using the gtk_label_set_text() method, which does not alter the
peer's font style.

Is it OK to commit?

-David Jee


2004-02-09  David Jee  <djee@redhat.com>

        * gnu/java/awt/peer/gtk/GtkButtonPeer.java
        (gtkSetLabel): New native method definition.
        (setLabel): Use gtkSetLabel.
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
        (Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkSetLabel): New method.


Index: gnu/java/awt/peer/gtk/GtkButtonPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java,v
retrieving revision 1.7
diff -u -r1.7 GtkButtonPeer.java
--- gnu/java/awt/peer/gtk/GtkButtonPeer.java	11 Dec 2003 13:50:50 -0000	1.7
+++ gnu/java/awt/peer/gtk/GtkButtonPeer.java	9 Feb 2004 19:24:33 -0000
@@ -54,6 +54,7 @@
   public native void connectSignals ();
 
   native void gtkSetFont(String name, int style, int size);
+  native void gtkSetLabel(String label);
   native void gtkWidgetSetForeground (int red, int green, int blue);
 
   public GtkButtonPeer (Button b)
@@ -63,7 +64,7 @@
 
   public void setLabel (String label) 
   {
-    set ("label", label);
+    gtkSetLabel(label);
   }
 
   public void handleEvent (AWTEvent e)
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c,v
retrieving revision 1.7
diff -u -r1.7 gnu_java_awt_peer_gtk_GtkButtonPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c	13 Dec 2003 01:15:47 -0000	1.7
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c	9 Feb 2004 19:24:36 -0000
@@ -88,6 +88,25 @@
 }
 
 JNIEXPORT void JNICALL 
+Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkSetLabel
+  (JNIEnv *env, jobject obj, jstring jtext)
+{
+  const char *text;
+  GtkWidget *label;
+  void *ptr;
+
+  ptr = NSA_GET_PTR (env, obj);
+  label = gtk_bin_get_child (GTK_BIN(ptr));
+  text = (*env)->GetStringUTFChars (env, jtext, NULL);
+
+  gdk_threads_enter ();
+  gtk_label_set_text (GTK_LABEL(label), text);
+  gdk_threads_leave ();
+
+  (*env)->ReleaseStringUTFChars (env, jtext, text);
+}
+
+JNIEXPORT void JNICALL 
 Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkSetFont
   (JNIEnv *env, jobject obj, jstring name, jint style, jint size)
 {

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