]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
GtkLabelPeer.java (create()): Call new create.
authorThomas Fitzsimmons <fitzsim@redhat.com>
Tue, 11 Nov 2003 17:04:47 +0000 (17:04 +0000)
committerThomas Fitzsimmons <fitzsim@gcc.gnu.org>
Tue, 11 Nov 2003 17:04:47 +0000 (17:04 +0000)
2003-11-11  Thomas Fitzsimmons  <fitzsim@redhat.com>

* gnu/java/awt/peer/gtk/GtkLabelPeer.java (create()): Call new create.
(create(String, float)): New method.
(setText): Make native.
(nativeSetAlignment): New method.
(setAlignment): Call nativeSetAlignment.
(getArgs): Remove method.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
(find_fg_color_widget, find_bg_color_widget): New functions.
(gtkWidgetSetForeground): Call find_fg_color_widget.
(gtkWidgetSetBackground): Call find_bg_color_widget.  Modify active and
prelight colors.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c (create): Wrap label
widget in event box.
(setText, setAlignment): Implement new native methods.

From-SVN: r73453

libjava/ChangeLog
libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java
libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c

index 1d26a6f039808a416afea39d377a5c4c378891e5..0027b928281828cf032957997cc9c7e458fd11a4 100644 (file)
@@ -1,3 +1,20 @@
+2003-11-11  Thomas Fitzsimmons  <fitzsim@redhat.com>
+
+       * gnu/java/awt/peer/gtk/GtkLabelPeer.java (create()): Call new create.
+       (create(String, float)): New method.
+       (setText): Make native.
+       (nativeSetAlignment): New method.
+       (setAlignment): Call nativeSetAlignment.
+       (getArgs): Remove method.
+       * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
+       (find_fg_color_widget, find_bg_color_widget): New functions.
+       (gtkWidgetSetForeground): Call find_fg_color_widget.
+       (gtkWidgetSetBackground): Call find_bg_color_widget.  Modify active and
+       prelight colors.
+       * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c (create): Wrap label
+       widget in event box.
+       (setText, setAlignment): Implement new native methods.
+
 2003-11-11  Michael Koch  <konqueror@gmx.de>
 
        * java/awt/Font.java,
index e70be2b4ef4fd9d37dd1c7955251fc9b868e30a3..b0a9ff79952de9b4440382c3d2250a263aa5e2e8 100644 (file)
@@ -45,21 +45,25 @@ import java.awt.peer.LabelPeer;
 public class GtkLabelPeer extends GtkComponentPeer
     implements LabelPeer
 {
-  native void create ();
+  void create ()
+  {
+    Label label = (Label) awtComponent;
+    create (label.getText (), getGtkAlignment (label.getAlignment ()));
+  }
+
+  native void create (String text, float alignment);
 
   public GtkLabelPeer (Label l)
   {
     super (l);
   }
-    
-  public void setText (String text)
-  {
-    set ("label", text);
-  }
 
+  native public void setText (String text);
+
+  native void nativeSetAlignment (float alignment);
   public void setAlignment (int alignment)
   {
-    set ("xalign", getGtkAlignment (alignment));
+    nativeSetAlignment (getGtkAlignment (alignment));
   }
 
   float getGtkAlignment (int alignment)
@@ -76,15 +80,4 @@ public class GtkLabelPeer extends GtkComponentPeer
 
     return 0.0f;
   }
-
-  public void getArgs (Component component, GtkArgList args)
-  {
-    super.getArgs (component, args);
-
-    Label label = (Label) component;
-
-    args.add ("label", label.getText ());
-    args.add ("xalign", getGtkAlignment (label.getAlignment ()));
-    args.add ("yalign", 0.5f);
-  }
 }
index 98e8e8cbe9f290723fdb21686a117848b68f4bdd..70aabf0cad976397eff856487e38f795b7c4b8bf 100644 (file)
@@ -40,6 +40,9 @@ exception statement from your version. */
 #include "gnu_java_awt_peer_gtk_GtkComponentPeer.h"
 #include <gtk/gtkprivate.h>
 
+static GtkWidget *find_fg_color_widget (GtkWidget *widget);
+static GtkWidget *find_bg_color_widget (GtkWidget *widget);
+
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose
   (JNIEnv *env, jobject obj)
 {
@@ -299,7 +302,7 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetBackground
 
   gdk_threads_enter ();
 
-  widget = GTK_WIDGET (ptr);
+  widget = find_bg_color_widget (GTK_WIDGET (ptr));
 
   gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &normal_color);
   gtk_widget_modify_bg (widget, GTK_STATE_ACTIVE, &active_color);
@@ -324,9 +327,11 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetForeground
 
   gdk_threads_enter ();
 
-  widget = GTK_WIDGET (ptr);
+  widget = find_fg_color_widget (GTK_WIDGET (ptr));
 
   gtk_widget_modify_fg (widget, GTK_STATE_NORMAL, &color);
+  gtk_widget_modify_fg (widget, GTK_STATE_ACTIVE, &color);
+  gtk_widget_modify_fg (widget, GTK_STATE_PRELIGHT, &color);
 
   gdk_threads_leave ();
 }
@@ -542,3 +547,39 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectHooks
     connect_awt_hook (env, obj, 1, GTK_WIDGET (ptr)->window);
   gdk_threads_leave ();
 }
+
+static GtkWidget *
+find_fg_color_widget (GtkWidget *widget)
+{
+  GtkWidget *fg_color_widget;
+
+  if (GTK_IS_EVENT_BOX (widget))
+    fg_color_widget = gtk_bin_get_child (GTK_BIN(widget));
+  else
+    fg_color_widget = widget;
+
+  return fg_color_widget;
+}
+
+static GtkWidget *
+find_bg_color_widget (GtkWidget *widget)
+{
+  GtkWidget *bg_color_widget;
+
+  if (GTK_IS_WINDOW (widget))
+    {
+      GtkWidget *vbox;
+      GList* children;
+
+      children = gtk_container_get_children(GTK_CONTAINER(widget));
+      vbox = children->data;
+
+      children = gtk_container_get_children(GTK_CONTAINER(vbox));
+      bg_color_widget = children->data;
+    }
+  else
+    bg_color_widget = widget;
+
+  return bg_color_widget;
+}
+
index 7bddc330ddbfe0da24564f6c0ef7237e1ceda9f0..38a45d8e25069f4a3a70e21d68b8e04995912e9a 100644 (file)
@@ -41,15 +41,68 @@ exception statement from your version. */
 
 JNIEXPORT void JNICALL
 Java_gnu_java_awt_peer_gtk_GtkLabelPeer_create
-  (JNIEnv *env, jobject obj)
+  (JNIEnv *env, jobject obj, jstring text, jfloat xalign)
 {
   GtkWidget *label;
+  GtkWidget *ebox;
+  GtkContainer *ebox_container;
+  const char *str;
+
+  str = (*env)->GetStringUTFChars (env, text, 0);
+
+  gdk_threads_enter ();
+
+  ebox = gtk_event_box_new ();
+  ebox_container = GTK_CONTAINER (ebox);
+  label = gtk_label_new (str);
+  gtk_misc_set_alignment (GTK_MISC (label), xalign, 0.5);
+  gtk_container_add (ebox_container, label);
+  gtk_widget_show (label);
+
+  gdk_threads_leave ();
+
+  (*env)->ReleaseStringUTFChars (env, text, str);
+
+  NSA_SET_PTR (env, obj, ebox);
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setText
+  (JNIEnv *env, jobject obj, jstring text)
+{
+  const char *str;
+  void *ptr;
+  GtkWidget *label;
+
+  ptr = NSA_GET_PTR (env, obj);
+
+  str = (*env)->GetStringUTFChars (env, text, 0);
 
   gdk_threads_enter ();
 
-  label = gtk_label_new (NULL);
+  label = gtk_bin_get_child (GTK_BIN(ptr));
+
+  gtk_label_set_label (GTK_LABEL (label), str);
 
   gdk_threads_leave ();
 
-  NSA_SET_PTR (env, obj, label);
+  (*env)->ReleaseStringUTFChars (env, text, str);
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setAlignment
+  (JNIEnv *env, jobject obj, jfloat xalign)
+{
+  void *ptr;
+  GtkWidget *label;
+
+  ptr = NSA_GET_PTR (env, obj);
+
+  gdk_threads_enter ();
+
+  label = gtk_bin_get_child (GTK_BIN(ptr));
+
+  gtk_misc_set_alignment (GTK_MISC (label), xalign, 0.5);
+
+  gdk_threads_leave ();
 }