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) |
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 |
|
|
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 |
|
|
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 (); |
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 |
|
|
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); |
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 |
|
|
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); |
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 |
} |
} |
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 |
|
} |