41 |
|
|
42 |
static jmethodID beginNativeRepaintID; |
static jmethodID beginNativeRepaintID; |
43 |
static jmethodID endNativeRepaintID; |
static jmethodID endNativeRepaintID; |
44 |
|
static jmethodID postActionEventID; |
45 |
|
|
46 |
void |
void |
47 |
cp_gtk_button_init_jni (void) |
cp_gtk_button_init_jni (void) |
48 |
{ |
{ |
57 |
|
|
58 |
endNativeRepaintID = (*cp_gtk_gdk_env())->GetMethodID (cp_gtk_gdk_env(), gtkbuttonpeer, |
endNativeRepaintID = (*cp_gtk_gdk_env())->GetMethodID (cp_gtk_gdk_env(), gtkbuttonpeer, |
59 |
"endNativeRepaint", "()V"); |
"endNativeRepaint", "()V"); |
60 |
|
|
61 |
|
postActionEventID = (*cp_gtk_gdk_env())->GetMethodID (cp_gtk_gdk_env(), |
62 |
|
gtkbuttonpeer, |
63 |
|
"postActionEvent", "(I)V"); |
64 |
} |
} |
65 |
|
|
66 |
static void block_expose_event_cb (GtkWidget *widget, |
static void block_expose_event_cb (GtkWidget *widget, |
67 |
jobject peer); |
jobject peer); |
68 |
|
|
69 |
|
static void clicked_cb (GtkButton *button, |
70 |
|
jobject peer); |
71 |
|
|
72 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
73 |
Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create |
Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create |
74 |
(JNIEnv *env, jobject obj, jstring label) |
(JNIEnv *env, jobject obj, jstring label) |
166 |
g_signal_connect_after (G_OBJECT (button), "released", |
g_signal_connect_after (G_OBJECT (button), "released", |
167 |
G_CALLBACK (block_expose_event_cb), *gref); |
G_CALLBACK (block_expose_event_cb), *gref); |
168 |
|
|
169 |
|
g_signal_connect (G_OBJECT (button), "clicked", |
170 |
|
G_CALLBACK (clicked_cb), *gref); |
171 |
|
|
172 |
/* Component signals */ |
/* Component signals */ |
173 |
cp_gtk_component_connect_signals (G_OBJECT (button), gref); |
cp_gtk_component_connect_signals (G_OBJECT (button), gref); |
174 |
|
|
397 |
|
|
398 |
gdk_threads_enter (); |
gdk_threads_enter (); |
399 |
} |
} |
400 |
|
|
401 |
|
static void |
402 |
|
clicked_cb (GtkButton* button __attribute__((unused)), |
403 |
|
jobject peer) |
404 |
|
{ |
405 |
|
GdkEventButton* event; |
406 |
|
|
407 |
|
event = (GdkEventButton*) gtk_get_current_event (); |
408 |
|
g_assert (event); |
409 |
|
|
410 |
|
(*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, |
411 |
|
postActionEventID, |
412 |
|
cp_gtk_state_to_awt_mods (event->state)); |
413 |
|
|
414 |
|
gdk_event_free ((GdkEvent*) event); |
415 |
|
} |