/[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.18 by mkoch, Fri Oct 8 22:16:09 2004 UTC revision 1.19 by mkoch, Fri Oct 8 22:27:35 2004 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,
50                                        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
54    (JNIEnv *env, jobject obj, jstring label)    (JNIEnv *env, jobject obj, jstring label)
# Line 98  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 101  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
101    g_signal_connect (G_OBJECT (button), "focus-out-event",    g_signal_connect (G_OBJECT (button), "focus-out-event",
102                      G_CALLBACK (focus_out_cb), *gref);                      G_CALLBACK (focus_out_cb), *gref);
103    
104      g_signal_connect_after (G_OBJECT (button), "pressed",
105                              G_CALLBACK (block_expose_events_cb), *gref);
106    
107      g_signal_connect_after (G_OBJECT (button), "released",
108                              G_CALLBACK (block_expose_events_cb), *gref);
109    
110    gdk_threads_leave ();    gdk_threads_leave ();
111  }  }
112    
# Line 106  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 115  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
115    (JNIEnv *env, jobject obj, jstring jtext)    (JNIEnv *env, jobject obj, jstring jtext)
116  {  {
117    const char *text;    const char *text;
118      GtkWidget *button;
119    GtkWidget *label;    GtkWidget *label;
120    void *ptr;    void *ptr;
121    
# Line 115  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 125  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
125    
126    gdk_threads_enter ();    gdk_threads_enter ();
127    
128    label = gtk_bin_get_child (GTK_BIN (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
129      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    
132    gdk_threads_leave ();    gdk_threads_leave ();
# Line 129  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 140  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
140  {  {
141    const char *font_name;    const char *font_name;
142    void *ptr;    void *ptr;
143      GtkWidget *button;
144    GtkWidget *label;    GtkWidget *label;
145    PangoFontDescription *font_desc;    PangoFontDescription *font_desc;
146    
# Line 138  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 150  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
150    
151    gdk_threads_enter();    gdk_threads_enter();
152    
153    label = gtk_bin_get_child (GTK_BIN (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
154      label = gtk_bin_get_child (GTK_BIN (button));
155    
156    font_desc = pango_font_description_from_string (font_name);    font_desc = pango_font_description_from_string (font_name);
157    pango_font_description_set_size (font_desc, size * dpi_conversion_factor);    pango_font_description_set_size (font_desc, size * dpi_conversion_factor);
# Line 159  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 172  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
172  }  }
173    
174  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
175    Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetSetBackground
176      (JNIEnv *env, jobject obj, jint red, jint green, jint blue)
177    {
178      GdkColor normal_color;
179      GdkColor prelight_color;
180      GdkColor active_color;
181      int prelight_red;
182      int prelight_blue;
183      int prelight_green;
184      GtkWidget *button;
185      void *ptr;
186    
187      ptr = NSA_GET_PTR (env, obj);
188    
189      normal_color.red = (red / 255.0) * 65535;
190      normal_color.green = (green / 255.0) * 65535;
191      normal_color.blue = (blue / 255.0) * 65535;
192    
193      /* This calculation only approximate the active color produced by
194         Sun's AWT. */
195      active_color.red = 0.85 * (red / 255.0) * 65535;
196      active_color.green = 0.85 * (green / 255.0) * 65535;
197      active_color.blue = 0.85 * (blue / 255.0) * 65535;
198    
199      /* There is no separate prelight color in Motif. */
200      prelight_red = 1.15 * (red / 255.0) * 65535;
201      prelight_green = 1.15 * (green / 255.0) * 65535;
202      prelight_blue = 1.15 * (blue / 255.0) * 65535;
203    
204      prelight_color.red = prelight_red > 65535 ? 65535 : prelight_red;
205      prelight_color.green = prelight_green > 65535 ? 65535 : prelight_green;
206      prelight_color.blue = prelight_blue > 65535 ? 65535 : prelight_blue;
207    
208      gdk_threads_enter ();
209    
210      button = gtk_bin_get_child (GTK_BIN (ptr));
211    
212      gtk_widget_modify_bg (button, GTK_STATE_NORMAL, &normal_color);
213      gtk_widget_modify_bg (button, GTK_STATE_ACTIVE, &active_color);
214      gtk_widget_modify_bg (button, GTK_STATE_PRELIGHT, &prelight_color);
215    
216      gdk_threads_leave ();
217    }
218    
219    JNIEXPORT void JNICALL
220  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetSetForeground  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetSetForeground
221    (JNIEnv *env, jobject obj, jint red, jint green, jint blue)    (JNIEnv *env, jobject obj, jint red, jint green, jint blue)
222  {  {
223    GdkColor color;    GdkColor color;
224      GtkWidget *button;
225    GtkWidget *label;    GtkWidget *label;
226    void *ptr;    void *ptr;
227    
# Line 174  Java_gnu_java_awt_peer_gtk_GtkButtonPeer Line 233  Java_gnu_java_awt_peer_gtk_GtkButtonPeer
233    
234    gdk_threads_enter ();    gdk_threads_enter ();
235    
236    label = gtk_bin_get_child (GTK_BIN(ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
237      label = gtk_bin_get_child (GTK_BIN (button));
238    
239    gtk_widget_modify_fg (label, GTK_STATE_NORMAL, &color);    gtk_widget_modify_fg (label, GTK_STATE_NORMAL, &color);
240    gtk_widget_modify_fg (label, GTK_STATE_ACTIVE, &color);    gtk_widget_modify_fg (label, GTK_STATE_ACTIVE, &color);
# Line 187  JNIEXPORT void JNICALL Line 247  JNIEXPORT void JNICALL
247  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkActivate  Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkActivate
248    (JNIEnv *env, jobject obj)    (JNIEnv *env, jobject obj)
249  {  {
250      GtkWidget *button;
251    void *ptr;    void *ptr;
252    
253    ptr = NSA_GET_PTR (env, obj);    ptr = NSA_GET_PTR (env, obj);
254    
255    gdk_threads_enter ();    gdk_threads_enter ();
256    
257    gtk_widget_activate (GTK_WIDGET (ptr));    button = gtk_bin_get_child (GTK_BIN (ptr));
258      gtk_widget_activate (GTK_WIDGET (button));
259    
260    gdk_threads_leave ();    gdk_threads_leave ();
261  }  }
# Line 236  focus_out_cb (GtkWidget *widget __attrib Line 298  focus_out_cb (GtkWidget *widget __attrib
298                                JNI_FALSE);                                JNI_FALSE);
299    return FALSE;    return FALSE;
300  }  }
301    
302    static void
303    block_expose_events_cb (GtkWidget *widget, jobject peer)
304    {
305      (*gdk_env)->CallVoidMethod (gdk_env, peer,
306                                  beginNativeRepaintID);
307    
308      gdk_window_process_updates (widget->window, TRUE);
309    
310      (*gdk_env)->CallVoidMethod (gdk_env, peer,
311                                  endNativeRepaintID);
312    }

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19

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