883 |
switch (event->type) |
switch (event->type) |
884 |
{ |
{ |
885 |
case GDK_BUTTON_PRESS: |
case GDK_BUTTON_PRESS: |
886 |
|
gdk_threads_leave (); |
887 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
888 |
postMouseEventID, |
postMouseEventID, |
889 |
AWT_MOUSE_PRESSED, |
AWT_MOUSE_PRESSED, |
895 |
click_count, |
click_count, |
896 |
(event->button.button == 3) ? JNI_TRUE : |
(event->button.button == 3) ? JNI_TRUE : |
897 |
JNI_FALSE); |
JNI_FALSE); |
898 |
|
gdk_threads_enter (); |
899 |
hasBeenDragged = FALSE; |
hasBeenDragged = FALSE; |
900 |
break; |
break; |
901 |
case GDK_BUTTON_RELEASE: |
case GDK_BUTTON_RELEASE: |
902 |
{ |
{ |
903 |
int width, height; |
int width, height; |
904 |
|
|
905 |
|
gdk_threads_leave (); |
906 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
907 |
postMouseEventID, |
postMouseEventID, |
908 |
AWT_MOUSE_RELEASED, |
AWT_MOUSE_RELEASED, |
913 |
(jint)event->button.y, |
(jint)event->button.y, |
914 |
click_count, |
click_count, |
915 |
JNI_FALSE); |
JNI_FALSE); |
916 |
|
gdk_threads_enter (); |
917 |
|
|
918 |
/* Generate an AWT click event only if the release occured in the |
/* Generate an AWT click event only if the release occured in the |
919 |
window it was pressed in, and the mouse has not been dragged since |
window it was pressed in, and the mouse has not been dragged since |
925 |
&& event->button.x <= width |
&& event->button.x <= width |
926 |
&& event->button.y <= height) |
&& event->button.y <= height) |
927 |
{ |
{ |
928 |
|
gdk_threads_leave (); |
929 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
930 |
postMouseEventID, |
postMouseEventID, |
931 |
AWT_MOUSE_CLICKED, |
AWT_MOUSE_CLICKED, |
936 |
(jint)event->button.y, |
(jint)event->button.y, |
937 |
click_count, |
click_count, |
938 |
JNI_FALSE); |
JNI_FALSE); |
939 |
|
gdk_threads_enter (); |
940 |
} |
} |
941 |
} |
} |
942 |
break; |
break; |
947 |
| GDK_BUTTON4_MASK |
| GDK_BUTTON4_MASK |
948 |
| GDK_BUTTON5_MASK)) |
| GDK_BUTTON5_MASK)) |
949 |
{ |
{ |
950 |
|
gdk_threads_leave (); |
951 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
952 |
postMouseEventID, |
postMouseEventID, |
953 |
AWT_MOUSE_DRAGGED, |
AWT_MOUSE_DRAGGED, |
957 |
(jint)event->motion.y, |
(jint)event->motion.y, |
958 |
0, |
0, |
959 |
JNI_FALSE); |
JNI_FALSE); |
960 |
|
gdk_threads_enter (); |
961 |
hasBeenDragged = TRUE; |
hasBeenDragged = TRUE; |
962 |
} |
} |
963 |
else |
else |
964 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, postMouseEventID, |
{ |
965 |
AWT_MOUSE_MOVED, |
gdk_threads_leave (); |
966 |
(jlong)event->motion.time, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, postMouseEventID, |
967 |
state_to_awt_mods (event->motion.state), |
AWT_MOUSE_MOVED, |
968 |
(jint)event->motion.x, |
(jlong)event->motion.time, |
969 |
(jint)event->motion.y, |
state_to_awt_mods (event->motion.state), |
970 |
0, |
(jint)event->motion.x, |
971 |
JNI_FALSE); |
(jint)event->motion.y, |
972 |
|
0, |
973 |
|
JNI_FALSE); |
974 |
|
gdk_threads_enter (); |
975 |
|
} |
976 |
|
|
977 |
break; |
break; |
978 |
case GDK_ENTER_NOTIFY: |
case GDK_ENTER_NOTIFY: |
979 |
/* We are not interested in enter events that are due to |
/* We are not interested in enter events that are due to |
980 |
grab/ungrab and not to actually crossing boundaries */ |
grab/ungrab and not to actually crossing boundaries */ |
981 |
if (event->crossing.mode == GDK_CROSSING_NORMAL) |
if (event->crossing.mode == GDK_CROSSING_NORMAL) |
982 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, postMouseEventID, |
{ |
983 |
AWT_MOUSE_ENTERED, |
gdk_threads_leave (); |
984 |
(jlong)event->crossing.time, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, postMouseEventID, |
985 |
state_to_awt_mods_with_button_states (event->crossing.state), |
AWT_MOUSE_ENTERED, |
986 |
(jint)event->crossing.x, |
(jlong)event->crossing.time, |
987 |
(jint)event->crossing.y, |
state_to_awt_mods_with_button_states (event->crossing.state), |
988 |
0, |
(jint)event->crossing.x, |
989 |
JNI_FALSE); |
(jint)event->crossing.y, |
990 |
|
0, |
991 |
|
JNI_FALSE); |
992 |
|
gdk_threads_enter (); |
993 |
|
} |
994 |
break; |
break; |
995 |
case GDK_LEAVE_NOTIFY: |
case GDK_LEAVE_NOTIFY: |
996 |
/* We are not interested in leave events that are due to |
/* We are not interested in leave events that are due to |
997 |
grab/ungrab and not to actually crossing boundaries */ |
grab/ungrab and not to actually crossing boundaries */ |
998 |
if (event->crossing.mode == GDK_CROSSING_NORMAL) |
if (event->crossing.mode == GDK_CROSSING_NORMAL) |
999 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
{ |
1000 |
postMouseEventID, |
gdk_threads_leave (); |
1001 |
AWT_MOUSE_EXITED, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
1002 |
(jlong)event->crossing.time, |
postMouseEventID, |
1003 |
state_to_awt_mods_with_button_states (event->crossing.state), |
AWT_MOUSE_EXITED, |
1004 |
(jint)event->crossing.x, |
(jlong)event->crossing.time, |
1005 |
(jint)event->crossing.y, |
state_to_awt_mods_with_button_states (event->crossing.state), |
1006 |
0, |
(jint)event->crossing.x, |
1007 |
JNI_FALSE); |
(jint)event->crossing.y, |
1008 |
|
0, |
1009 |
|
JNI_FALSE); |
1010 |
|
gdk_threads_enter (); |
1011 |
|
} |
1012 |
break; |
break; |
1013 |
case GDK_CONFIGURE: |
case GDK_CONFIGURE: |
1014 |
{ |
{ |
1033 |
} |
} |
1034 |
break; |
break; |
1035 |
case GDK_EXPOSE: |
case GDK_EXPOSE: |
1036 |
|
gdk_threads_leave (); |
1037 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
1038 |
postExposeEventID, |
postExposeEventID, |
1039 |
(jint)event->expose.area.x, |
(jint)event->expose.area.x, |
1040 |
(jint)event->expose.area.y, |
(jint)event->expose.area.y, |
1041 |
(jint)event->expose.area.width, |
(jint)event->expose.area.width, |
1042 |
(jint)event->expose.area.height); |
(jint)event->expose.area.height); |
1043 |
|
gdk_threads_enter (); |
1044 |
break; |
break; |
1045 |
|
|
1046 |
case GDK_FOCUS_CHANGE: |
case GDK_FOCUS_CHANGE: |
1047 |
|
gdk_threads_leave (); |
1048 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
1049 |
postFocusEventID, |
postFocusEventID, |
1050 |
(jint) (event->focus_change.in) ? |
(jint) (event->focus_change.in) ? |
1051 |
AWT_FOCUS_GAINED : AWT_FOCUS_LOST, |
AWT_FOCUS_GAINED : AWT_FOCUS_LOST, |
1052 |
JNI_FALSE); |
JNI_FALSE); |
1053 |
|
gdk_threads_enter (); |
1054 |
break; |
break; |
1055 |
case GDK_KEY_PRESS: |
case GDK_KEY_PRESS: |
1056 |
if (GTK_IS_WINDOW (widget)) |
if (GTK_IS_WINDOW (widget)) |
1058 |
/* GdkEventKey *keyevent = (GdkEventKey *) event; */ |
/* GdkEventKey *keyevent = (GdkEventKey *) event; */ |
1059 |
/* g_printerr ("key press event: sent: %d time: %d state: %d keyval: %d length: %d string: %s hardware_keycode: %d group: %d\n", keyevent->send_event, keyevent->time, keyevent->state, keyevent->keyval, keyevent->length, keyevent->string, keyevent->hardware_keycode, keyevent->group); */ |
/* g_printerr ("key press event: sent: %d time: %d state: %d keyval: %d length: %d string: %s hardware_keycode: %d group: %d\n", keyevent->send_event, keyevent->time, keyevent->state, keyevent->keyval, keyevent->length, keyevent->string, keyevent->hardware_keycode, keyevent->group); */ |
1060 |
|
|
1061 |
|
gdk_threads_leave (); |
1062 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
1063 |
postKeyEventID, |
postKeyEventID, |
1064 |
(jint) AWT_KEY_PRESSED, |
(jint) AWT_KEY_PRESSED, |
1067 |
keysym_to_awt_keycode (event), |
keysym_to_awt_keycode (event), |
1068 |
keyevent_to_awt_keychar (event), |
keyevent_to_awt_keychar (event), |
1069 |
keysym_to_awt_keylocation (event)); |
keysym_to_awt_keylocation (event)); |
1070 |
|
gdk_threads_enter (); |
1071 |
/* FIXME: generation of key typed events needs to be moved |
/* FIXME: generation of key typed events needs to be moved |
1072 |
to GtkComponentPeer.postKeyEvent. If the key in a key |
to GtkComponentPeer.postKeyEvent. If the key in a key |
1073 |
press event is not an "action" key |
press event is not an "action" key |
1081 |
case GDK_KEY_RELEASE: |
case GDK_KEY_RELEASE: |
1082 |
if (GTK_IS_WINDOW (widget)) |
if (GTK_IS_WINDOW (widget)) |
1083 |
{ |
{ |
1084 |
|
gdk_threads_leave (); |
1085 |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
(*gdk_env())->CallVoidMethod (gdk_env(), peer, |
1086 |
postKeyEventID, |
postKeyEventID, |
1087 |
(jint) AWT_KEY_RELEASED, |
(jint) AWT_KEY_RELEASED, |
1090 |
keysym_to_awt_keycode (event), |
keysym_to_awt_keycode (event), |
1091 |
keyevent_to_awt_keychar (event), |
keyevent_to_awt_keychar (event), |
1092 |
keysym_to_awt_keylocation (event)); |
keysym_to_awt_keylocation (event)); |
1093 |
|
gdk_threads_enter (); |
1094 |
return TRUE; |
return TRUE; |
1095 |
} |
} |
1096 |
else |
else |