/[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.24 by mark, Sat Jul 2 20:32:53 2005 UTC revision 1.25 by fitzsim, Mon Jul 11 23:27:43 2005 UTC
# Line 46  static gboolean focus_out_cb (GtkWidget Line 46  static gboolean focus_out_cb (GtkWidget
46                                GdkEventFocus *event,                                GdkEventFocus *event,
47                                jobject peer);                                jobject peer);
48    
49  static void block_expose_events_cb (GtkWidget *widget,  static void block_expose_event_cb (GtkWidget *widget,
50                                      jobject peer);                                     jobject peer);
51    
52  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
53  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create
# Line 57  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 57  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
57    GtkWidget *eventbox;    GtkWidget *eventbox;
58    GtkWidget *button;    GtkWidget *button;
59    
60      gdk_threads_enter ();
61    
62    NSA_SET_GLOBAL_REF (env, obj);    NSA_SET_GLOBAL_REF (env, obj);
63    
64    c_label = (*env)->GetStringUTFChars (env, label, NULL);    c_label = (*env)->GetStringUTFChars (env, label, NULL);
65    
   gdk_threads_enter ();  
   
66    eventbox = gtk_event_box_new ();    eventbox = gtk_event_box_new ();
67    button = gtk_button_new_with_label (c_label);    button = gtk_button_new_with_label (c_label);
68    gtk_container_add (GTK_CONTAINER (eventbox), button);    gtk_container_add (GTK_CONTAINER (eventbox), button);
69    gtk_widget_show (button);    gtk_widget_show (button);
70    
   gdk_threads_leave ();  
   
71    (*env)->ReleaseStringUTFChars (env, label, c_label);    (*env)->ReleaseStringUTFChars (env, label, c_label);
72    NSA_SET_PTR (env, obj, eventbox);    NSA_SET_PTR (env, obj, eventbox);
73    
74      gdk_threads_leave ();
75  }  }
76    
77  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
# Line 82  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 82  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
82    jobject *gref;    jobject *gref;
83    GtkWidget *button;    GtkWidget *button;
84    
85      gdk_threads_enter ();
86    
87    ptr = NSA_GET_PTR (env, obj);    ptr = NSA_GET_PTR (env, obj);
88    gref = NSA_GET_GLOBAL_REF (env, obj);    gref = NSA_GET_GLOBAL_REF (env, obj);
89    
   gdk_threads_enter ();  
   
90    button = gtk_bin_get_child (GTK_BIN (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
91    
92    g_signal_connect (G_OBJECT (ptr), "event",    g_signal_connect (G_OBJECT (ptr), "event",
# Line 102  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 102  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
102                      G_CALLBACK (focus_out_cb), *gref);                      G_CALLBACK (focus_out_cb), *gref);
103    
104    g_signal_connect_after (G_OBJECT (button), "pressed",    g_signal_connect_after (G_OBJECT (button), "pressed",
105                            G_CALLBACK (block_expose_events_cb), *gref);                            G_CALLBACK (block_expose_event_cb), *gref);
106    
107    g_signal_connect_after (G_OBJECT (button), "released",    g_signal_connect_after (G_OBJECT (button), "released",
108                            G_CALLBACK (block_expose_events_cb), *gref);                            G_CALLBACK (block_expose_event_cb), *gref);
109    
110    gdk_threads_leave ();    gdk_threads_leave ();
111  }  }
# Line 119  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 119  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
119    GtkWidget *label;    GtkWidget *label;
120    void *ptr;    void *ptr;
121    
122      gdk_threads_enter ();
123    
124    ptr = NSA_GET_PTR (env, obj);    ptr = NSA_GET_PTR (env, obj);
125    
126    text = (*env)->GetStringUTFChars (env, jtext, NULL);    text = (*env)->GetStringUTFChars (env, jtext, NULL);
127    
   gdk_threads_enter ();  
   
128    button = gtk_bin_get_child (GTK_BIN (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
129    label = gtk_bin_get_child (GTK_BIN (button));    label = gtk_bin_get_child (GTK_BIN (button));
130    gtk_label_set_text (GTK_LABEL (label), text);    gtk_label_set_text (GTK_LABEL (label), text);
131    
   gdk_threads_leave ();  
   
132    (*env)->ReleaseStringUTFChars (env, jtext, text);    (*env)->ReleaseStringUTFChars (env, jtext, text);
133    
134      gdk_threads_leave ();
135  }  }
136    
137  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
# Line 144  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 144  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
144    GtkWidget *label;    GtkWidget *label;
145    PangoFontDescription *font_desc;    PangoFontDescription *font_desc;
146    
147      gdk_threads_enter();
148    
149    ptr = NSA_GET_PTR (env, obj);    ptr = NSA_GET_PTR (env, obj);
150    
151    font_name = (*env)->GetStringUTFChars (env, name, NULL);    font_name = (*env)->GetStringUTFChars (env, name, NULL);
152    
   gdk_threads_enter();  
   
153    button = gtk_bin_get_child (GTK_BIN (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
154    label = gtk_bin_get_child (GTK_BIN (button));    label = gtk_bin_get_child (GTK_BIN (button));
155    
# Line 166  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 166  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
166    
167    pango_font_description_free (font_desc);    pango_font_description_free (font_desc);
168    
   gdk_threads_leave();  
   
169    (*env)->ReleaseStringUTFChars (env, name, font_name);    (*env)->ReleaseStringUTFChars (env, name, font_name);
170    
171      gdk_threads_leave();
172  }  }
173    
174  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
# Line 184  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 184  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
184    GtkWidget *button;    GtkWidget *button;
185    void *ptr;    void *ptr;
186    
187      gdk_threads_enter ();
188    
189    ptr = NSA_GET_PTR (env, obj);    ptr = NSA_GET_PTR (env, obj);
190    
191    normal_color.red = (red / 255.0) * 65535;    normal_color.red = (red / 255.0) * 65535;
# Line 205  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 207  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
207    prelight_color.green = prelight_green > 65535 ? 65535 : prelight_green;    prelight_color.green = prelight_green > 65535 ? 65535 : prelight_green;
208    prelight_color.blue = prelight_blue > 65535 ? 65535 : prelight_blue;    prelight_color.blue = prelight_blue > 65535 ? 65535 : prelight_blue;
209    
   gdk_threads_enter ();  
   
210    button = gtk_bin_get_child (GTK_BIN (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
211    
212    gtk_widget_modify_bg (button, GTK_STATE_NORMAL, &normal_color);    gtk_widget_modify_bg (button, GTK_STATE_NORMAL, &normal_color);
# Line 225  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 225  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
225    GtkWidget *label;    GtkWidget *label;
226    void *ptr;    void *ptr;
227    
228      gdk_threads_enter ();
229    
230    ptr = NSA_GET_PTR (env, obj);    ptr = NSA_GET_PTR (env, obj);
231    
232    color.red = (red / 255.0) * 65535;    color.red = (red / 255.0) * 65535;
233    color.green = (green / 255.0) * 65535;    color.green = (green / 255.0) * 65535;
234    color.blue = (blue / 255.0) * 65535;    color.blue = (blue / 255.0) * 65535;
235    
   gdk_threads_enter ();  
   
236    button = gtk_bin_get_child (GTK_BIN (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
237    label = gtk_bin_get_child (GTK_BIN (button));    label = gtk_bin_get_child (GTK_BIN (button));
238    
# Line 250  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 250  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
250    GtkWidget *button;    GtkWidget *button;
251    void *ptr;    void *ptr;
252    
   ptr = NSA_GET_PTR (env, obj);  
   
253    gdk_threads_enter ();    gdk_threads_enter ();
254    
255      ptr = NSA_GET_PTR (env, obj);
256    
257    button = gtk_bin_get_child (GTK_BIN (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
258    gtk_widget_activate (GTK_WIDGET (button));    gtk_widget_activate (GTK_WIDGET (button));
259    
# Line 267  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 267  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
267    void *ptr;    void *ptr;
268    GtkWidget *button;    GtkWidget *button;
269    
270      gdk_threads_enter ();
271    
272    ptr = NSA_GET_PTR (env, obj);    ptr = NSA_GET_PTR (env, obj);
273    
   gdk_threads_enter ();  
274    button = gtk_bin_get_child (GTK_BIN (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
275    gtk_widget_grab_focus (button);    gtk_widget_grab_focus (button);
276    
277    gdk_threads_leave ();    gdk_threads_leave ();
278  }  }
279    
# Line 282  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 284  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
284    GtkWidget *widget, *child;    GtkWidget *widget, *child;
285    void *ptr;    void *ptr;
286    
   ptr = NSA_GET_PTR (env, obj);  
   
287    gdk_threads_enter ();    gdk_threads_enter ();
288    
289      ptr = NSA_GET_PTR (env, obj);
290    
291    widget = GTK_WIDGET (ptr);    widget = GTK_WIDGET (ptr);
292    
293    /* We assume that -1 is a width or height and not a request for the    /* We assume that -1 is a width or height and not a request for the
# Line 317  focus_in_cb (GtkWidget *widget __attribu Line 319  focus_in_cb (GtkWidget *widget __attribu
319  {  {
320    gdk_threads_leave ();    gdk_threads_leave ();
321    (*gdk_env())->CallVoidMethod (gdk_env(), peer,    (*gdk_env())->CallVoidMethod (gdk_env(), peer,
322                                postFocusEventID,                                  postFocusEventID,
323                                AWT_FOCUS_GAINED,                                  AWT_FOCUS_GAINED,
324                                JNI_FALSE);                                  JNI_FALSE);
325    gdk_threads_enter ();    gdk_threads_enter ();
326    return FALSE;    return FALSE;
327  }  }
# Line 331  focus_out_cb (GtkWidget *widget __attrib Line 333  focus_out_cb (GtkWidget *widget __attrib
333  {  {
334    gdk_threads_leave ();    gdk_threads_leave ();
335    (*gdk_env())->CallVoidMethod (gdk_env(), peer,    (*gdk_env())->CallVoidMethod (gdk_env(), peer,
336                                postFocusEventID,                                  postFocusEventID,
337                                AWT_FOCUS_LOST,                                  AWT_FOCUS_LOST,
338                                JNI_FALSE);                                  JNI_FALSE);
339    gdk_threads_enter ();    gdk_threads_enter ();
340    return FALSE;    return FALSE;
341  }  }
342    
343  static void  static void
344  block_expose_events_cb (GtkWidget *widget, jobject peer)  block_expose_event_cb (GtkWidget *widget, jobject peer)
345  {  {
346    gdk_threads_leave ();    gdk_threads_leave ();
347    
348    (*gdk_env())->CallVoidMethod (gdk_env(), peer,    (*gdk_env())->CallVoidMethod (gdk_env(), peer,
349                                beginNativeRepaintID);                                  beginNativeRepaintID);
350    
351    gdk_threads_enter ();    gdk_threads_enter ();
352    
353    gdk_window_process_updates (widget->window, TRUE);    gdk_window_process_updates (widget->window, TRUE);
354    
355    gdk_threads_leave ();    gdk_threads_leave ();
356    
357    (*gdk_env())->CallVoidMethod (gdk_env(), peer,    (*gdk_env())->CallVoidMethod (gdk_env(), peer,
358                                endNativeRepaintID);                                endNativeRepaintID);
359    
360    gdk_threads_enter ();    gdk_threads_enter ();
361  }  }

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

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