/[classpath]/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
ViewVC logotype

Diff of /classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.16 by mark, Fri Jul 30 23:16:58 2004 UTC revision 1.16.2.1 by gnu_andrew, Fri Jan 14 10:24:17 2005 UTC
# Line 37  exception statement from your version. * Line 37  exception statement from your version. *
37    
38    
39  #include "gtkpeer.h"  #include "gtkpeer.h"
 #include "gnu_java_awt_peer_gtk_GtkComponentPeer.h"  
40  #include "gnu_java_awt_peer_gtk_GtkButtonPeer.h"  #include "gnu_java_awt_peer_gtk_GtkButtonPeer.h"
41    
42    static gboolean focus_in_cb (GtkWidget *widget,
43                                 GdkEventFocus *event,
44                                 jobject peer);
45    static gboolean focus_out_cb (GtkWidget *widget,
46                                  GdkEventFocus *event,
47                                  jobject peer);
48    
49  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
50  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create
51    (JNIEnv *env, jobject obj, jstring label)    (JNIEnv *env, jobject obj, jstring label)
52  {  {
53    const char *c_label;    const char *c_label;
54      GtkWidget *eventbox;
55    GtkWidget *button;    GtkWidget *button;
56    
57    NSA_SET_GLOBAL_REF (env, obj);    NSA_SET_GLOBAL_REF (env, obj);
# Line 53  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 60  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
60    
61    gdk_threads_enter ();    gdk_threads_enter ();
62    
63      eventbox = gtk_event_box_new ();
64    button = gtk_button_new_with_label (c_label);    button = gtk_button_new_with_label (c_label);
65      gtk_container_add (GTK_CONTAINER (eventbox), button);
66    gtk_widget_show (button);    gtk_widget_show (button);
67    
68    gdk_threads_leave ();    gdk_threads_leave ();
69    
70    (*env)->ReleaseStringUTFChars (env, label, c_label);    (*env)->ReleaseStringUTFChars (env, label, c_label);
71    NSA_SET_PTR (env, obj, button);    NSA_SET_PTR (env, obj, eventbox);
72  }  }
73    
74  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
75  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_connectJObject  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_connectSignals
76    (JNIEnv *env, jobject obj)    (JNIEnv *env, jobject obj)
77  {  {
78    void *ptr;    void *ptr;
79      jobject *gref;
80      GtkWidget *button;
81    
82    ptr = NSA_GET_PTR (env, obj);    ptr = NSA_GET_PTR (env, obj);
83      gref = NSA_GET_GLOBAL_REF (env, obj);
84    
85    gdk_threads_enter ();    gdk_threads_enter ();
86    
87    gtk_widget_realize (GTK_WIDGET (ptr));    gtk_widget_realize (GTK_WIDGET (ptr));
88      button = gtk_bin_get_child (GTK_BIN (ptr));
89    
90    connect_awt_hook (env, obj, 1, GTK_BUTTON(ptr)->event_window);    g_signal_connect (G_OBJECT (ptr), "event",
91                        G_CALLBACK (pre_event_handler), *gref);
92    
93    gdk_threads_leave ();    g_signal_connect (G_OBJECT (button), "event",
94  }                      G_CALLBACK (pre_event_handler), *gref);
95    
96  JNIEXPORT void JNICALL    g_signal_connect (G_OBJECT (button), "focus-in-event",
97  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_connectSignals                      G_CALLBACK (focus_in_cb), *gref);
98    (JNIEnv *env, jobject obj)  
99  {    g_signal_connect (G_OBJECT (button), "focus-out-event",
100    /* FIXME: Do we need to connect any signals here? Otherwise just do not                      G_CALLBACK (focus_out_cb), *gref);
      override parent method. */  
101    
102    /* Connect the superclass signals.  */    gdk_threads_leave ();
   Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (env, obj);  
103  }  }
104    
105  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
# Line 113  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 125  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
125  }  }
126    
127  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
128  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkSetFont  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetModifyFont
129    (JNIEnv *env, jobject obj, jstring name, jint style, jint size)    (JNIEnv *env, jobject obj, jstring name, jint style, jint size)
130  {  {
131    const char *font_name;    const char *font_name;
# Line 186  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 198  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
198    
199    gdk_threads_leave ();    gdk_threads_leave ();
200  }  }
201    
202    JNIEXPORT void JNICALL
203    Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetRequestFocus
204      (JNIEnv *env, jobject obj)
205    {
206      void *ptr;
207      GtkWidget *button;
208    
209      ptr = NSA_GET_PTR (env, obj);
210    
211      gdk_threads_enter ();
212      button = gtk_bin_get_child (GTK_BIN (ptr));
213      gtk_widget_grab_focus (button);
214      gdk_threads_leave ();
215    }
216    
217    static gboolean
218    focus_in_cb (GtkWidget *widget __attribute((unused)),
219                 GdkEventFocus *event __attribute((unused)),
220                 jobject peer)
221    {
222      (*gdk_env)->CallVoidMethod (gdk_env, peer,
223                                  postFocusEventID,
224                                  AWT_FOCUS_GAINED,
225                                  JNI_FALSE);
226      return FALSE;
227    }
228    
229    static gboolean
230    focus_out_cb (GtkWidget *widget __attribute((unused)),
231                  GdkEventFocus *event __attribute((unused)),
232                  jobject peer)
233    {
234      (*gdk_env)->CallVoidMethod (gdk_env, peer,
235                                  postFocusEventID,
236                                  AWT_FOCUS_LOST,
237                                  JNI_FALSE);
238      return FALSE;
239    }

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.16.2.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26