/[classpath]/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
ViewVC logotype

Diff of /classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.15 by fitzsim, Wed Oct 8 16:00:57 2003 UTC revision 1.16 by fitzsim, Thu Oct 9 00:34:16 2003 UTC
# Line 813  generates_key_typed_event (GdkEvent *eve Line 813  generates_key_typed_event (GdkEvent *eve
813  void  void
814  awt_event_handler (GdkEvent *event)  awt_event_handler (GdkEvent *event)
815  {  {
816    jobject *obj_ptr;    jobject *event_obj_ptr;
817    static guint32 button_click_time = 0;    static guint32 button_click_time = 0;
818    static GdkWindow *button_window = NULL;    static GdkWindow *button_window = NULL;
819    static guint button_number = -1;    static guint button_number = -1;
# Line 865  awt_event_handler (GdkEvent *event) Line 865  awt_event_handler (GdkEvent *event)
865                             NULL,                             NULL,
866                             NULL,                             NULL,
867                             NULL,                             NULL,
868                             (guchar **)&obj_ptr))                             (guchar **)&event_obj_ptr))
869      {      {
870          GtkWidget *event_widget;
871          GtkWidget *grab_widget;
872          jobject *grab_obj_ptr = NULL;
873          void *ptr;
874    
875          /* Implement modality using GTK grabs. */
876          g_assert (global_gtk_window_group);
877          if (global_gtk_window_group->grabs)
878            {
879              grab_widget = global_gtk_window_group->grabs->data;
880              g_assert (grab_widget);
881    
882              gdk_property_get (grab_widget->window,
883                                gdk_atom_intern ("_GNU_GTKAWT_ADDR", FALSE),
884                                gdk_atom_intern ("CARDINAL", FALSE),
885                                0,
886                                sizeof (jobject),
887                                FALSE,
888                                NULL,
889                                NULL,
890                                NULL,
891                                (guchar **)&grab_obj_ptr);
892    
893              ptr = NSA_GET_PTR (gdk_env, *event_obj_ptr);
894              event_widget = GTK_WIDGET(ptr);
895    
896              if (GTK_WIDGET_IS_SENSITIVE (event_widget) &&
897                  gtk_widget_is_ancestor (event_widget, grab_widget))
898                {
899                  g_free (grab_obj_ptr);
900    
901                  grab_obj_ptr = event_obj_ptr;
902                }
903            }
904          else
905            grab_obj_ptr = event_obj_ptr;
906    
907        switch (event->type)        switch (event->type)
908          {          {
909          case GDK_BUTTON_PRESS:          case GDK_BUTTON_PRESS:
910            (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,            (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr, postMouseEventID,
911                                        AWT_MOUSE_PRESSED,                                        AWT_MOUSE_PRESSED,
912                                        (jlong)event->button.time,                                        (jlong)event->button.time,
913                                      state_to_awt_mods (event->button.state) |                                      state_to_awt_mods (event->button.state) |
# Line 902  awt_event_handler (GdkEvent *event) Line 939  awt_event_handler (GdkEvent *event)
939              /*      if (--grab_counter == 0)              /*      if (--grab_counter == 0)
940                gdk_pointer_ungrab (event->button.time);                gdk_pointer_ungrab (event->button.time);
941              */              */
942              (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,              (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
943                                            postMouseEventID,
944                                          AWT_MOUSE_RELEASED,                                          AWT_MOUSE_RELEASED,
945                                          (jlong)event->button.time,                                          (jlong)event->button.time,
946                                      state_to_awt_mods (event->button.state) |                                      state_to_awt_mods (event->button.state) |
# Line 918  awt_event_handler (GdkEvent *event) Line 956  awt_event_handler (GdkEvent *event)
956                  && event->button.y >= 0                  && event->button.y >= 0
957                  && event->button.x <= width                  && event->button.x <= width
958                  && event->button.y <= height)                  && event->button.y <= height)
959                (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,                (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
960                                              postMouseEventID,
961                                            AWT_MOUSE_CLICKED,                                            AWT_MOUSE_CLICKED,
962                                            (jlong)event->button.time,                                            (jlong)event->button.time,
963                                     state_to_awt_mods (event->button.state) |                                     state_to_awt_mods (event->button.state) |
# Line 930  awt_event_handler (GdkEvent *event) Line 969  awt_event_handler (GdkEvent *event)
969            }            }
970            break;            break;
971          case GDK_MOTION_NOTIFY:          case GDK_MOTION_NOTIFY:
972            (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,            (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr, postMouseEventID,
973                                        AWT_MOUSE_MOVED,                                        AWT_MOUSE_MOVED,
974                                        (jlong)event->motion.time,                                        (jlong)event->motion.time,
975                                        state_to_awt_mods (event->motion.state),                                        state_to_awt_mods (event->motion.state),
# Line 944  awt_event_handler (GdkEvent *event) Line 983  awt_event_handler (GdkEvent *event)
983                                       | GDK_BUTTON4_MASK                                       | GDK_BUTTON4_MASK
984                                       | GDK_BUTTON5_MASK))                                       | GDK_BUTTON5_MASK))
985              {              {
986                (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,                (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
987                                              postMouseEventID,
988                                            AWT_MOUSE_DRAGGED,                                            AWT_MOUSE_DRAGGED,
989                                            (jlong)event->motion.time,                                            (jlong)event->motion.time,
990                                        state_to_awt_mods (event->motion.state),                                        state_to_awt_mods (event->motion.state),
# Line 954  awt_event_handler (GdkEvent *event) Line 994  awt_event_handler (GdkEvent *event)
994              }              }
995            break;            break;
996          case GDK_ENTER_NOTIFY:          case GDK_ENTER_NOTIFY:
997            (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,            (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr, postMouseEventID,
998                                        AWT_MOUSE_ENTERED,                                        AWT_MOUSE_ENTERED,
999                                        (jlong)event->crossing.time,                                        (jlong)event->crossing.time,
1000                                      state_to_awt_mods (event->crossing.state),                                      state_to_awt_mods (event->crossing.state),
# Line 964  awt_event_handler (GdkEvent *event) Line 1004  awt_event_handler (GdkEvent *event)
1004            break;            break;
1005          case GDK_LEAVE_NOTIFY:          case GDK_LEAVE_NOTIFY:
1006            if (event->crossing.mode == GDK_CROSSING_NORMAL)            if (event->crossing.mode == GDK_CROSSING_NORMAL)
1007              (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,              (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
1008                                            postMouseEventID,
1009                                          AWT_MOUSE_EXITED,                                          AWT_MOUSE_EXITED,
1010                                          (jlong)event->crossing.time,                                          (jlong)event->crossing.time,
1011                                      state_to_awt_mods (event->crossing.state),                                      state_to_awt_mods (event->crossing.state),
# Line 1005  awt_event_handler (GdkEvent *event) Line 1046  awt_event_handler (GdkEvent *event)
1046                  bottom = r.height - h - y;                  bottom = r.height - h - y;
1047                  right = r.width - w - x;                  right = r.width - w - x;
1048    
1049                  (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,                  (*gdk_env)->CallVoidMethod (gdk_env, *event_obj_ptr,
1050                                              postConfigureEventID,                                              postConfigureEventID,
1051                                              (jint) event->configure.x,                                              (jint) event->configure.x,
1052                                              (jint) event->configure.y,                                              (jint) event->configure.y,
# Line 1021  awt_event_handler (GdkEvent *event) Line 1062  awt_event_handler (GdkEvent *event)
1062            break;            break;
1063          case GDK_EXPOSE:          case GDK_EXPOSE:
1064            {            {
1065              (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,              (*gdk_env)->CallVoidMethod (gdk_env, *event_obj_ptr,
1066                                          postExposeEventID,                                          postExposeEventID,
1067                                          (jint)event->expose.area.x,                                          (jint)event->expose.area.x,
1068                                          (jint)event->expose.area.y,                                          (jint)event->expose.area.y,
# Line 1066  awt_event_handler (GdkEvent *event) Line 1107  awt_event_handler (GdkEvent *event)
1107                                    NULL,                                    NULL,
1108                                    NULL,                                    NULL,
1109                                    NULL,                                    NULL,
1110                                    (guchar **)&obj_ptr);                                    (guchar **)&grab_obj_ptr);
1111    
1112                  (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,                  (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
1113                                              postKeyEventID,                                              postKeyEventID,
1114                                              (jint) AWT_KEY_PRESSED,                                              (jint) AWT_KEY_PRESSED,
1115                                              (jlong) event->key.time,                                              (jlong) event->key.time,
# Line 1078  awt_event_handler (GdkEvent *event) Line 1119  awt_event_handler (GdkEvent *event)
1119                               keysym_to_awt_keylocation (event));                               keysym_to_awt_keylocation (event));
1120    
1121                  if (generates_key_typed_event (event, window->focus_widget))                  if (generates_key_typed_event (event, window->focus_widget))
1122                    (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,                    (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
1123                                                postKeyEventID,                                                postKeyEventID,
1124                                                (jint) AWT_KEY_TYPED,                                                (jint) AWT_KEY_TYPED,
1125                                                (jlong) event->key.time,                                                (jlong) event->key.time,
1126                                                state_to_awt_mods (event->key.state),                                            state_to_awt_mods (event->key.state),
1127                                                VK_UNDEFINED,                                                VK_UNDEFINED,
1128                                                keyevent_to_awt_keychar (event),                                                keyevent_to_awt_keychar (event),
1129                                                AWT_KEY_LOCATION_UNKNOWN);                                                AWT_KEY_LOCATION_UNKNOWN);
# Line 1121  awt_event_handler (GdkEvent *event) Line 1162  awt_event_handler (GdkEvent *event)
1162                                    NULL,                                    NULL,
1163                                    NULL,                                    NULL,
1164                                    NULL,                                    NULL,
1165                                    (guchar **)&obj_ptr);                                    (guchar **)&grab_obj_ptr);
1166    
1167                  (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,                  (*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
1168                                              postKeyEventID,                                              postKeyEventID,
1169                                              (jint) AWT_KEY_RELEASED,                                              (jint) AWT_KEY_RELEASED,
1170                                              (jlong) event->key.time,                                              (jlong) event->key.time,
# Line 1135  awt_event_handler (GdkEvent *event) Line 1176  awt_event_handler (GdkEvent *event)
1176            }            }
1177            break;            break;
1178          case GDK_FOCUS_CHANGE:          case GDK_FOCUS_CHANGE:
1179            (*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,            (*gdk_env)->CallVoidMethod (gdk_env, *event_obj_ptr,
1180                                        postFocusEventID,                                        postFocusEventID,
1181                                        (jint) (event->focus_change.in) ?                                        (jint) (event->focus_change.in) ?
1182                                        AWT_FOCUS_GAINED : AWT_FOCUS_LOST,                                        AWT_FOCUS_GAINED : AWT_FOCUS_LOST,
# Line 1144  awt_event_handler (GdkEvent *event) Line 1185  awt_event_handler (GdkEvent *event)
1185          default:          default:
1186            break;            break;
1187          }          }
1188        g_free (obj_ptr);        g_free (event_obj_ptr);
1189      }      }
1190    
1191    gtk_main_do_event (event);    gtk_main_do_event (event);

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16

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