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

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

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

revision 1.31.2.10 by gnu_andrew, Sat Sep 10 15:32:02 2005 UTC revision 1.31.2.11 by gnu_andrew, Tue Sep 20 18:46:38 2005 UTC
# Line 952  keyevent_state_to_awt_mods (GdkEventKey Line 952  keyevent_state_to_awt_mods (GdkEventKey
952    
953        if (event->keyval == GDK_Shift_L        if (event->keyval == GDK_Shift_L
954            || event->keyval == GDK_Shift_R)            || event->keyval == GDK_Shift_R)
955          result |= AWT_SHIFT_DOWN_MASK;          result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK;
956        else        else
957          {          {
958            if (state & GDK_SHIFT_MASK)            if (state & GDK_SHIFT_MASK)
959              result |= AWT_SHIFT_DOWN_MASK;              result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK;
960          }          }
961    
962        if (event->keyval == GDK_Control_L        if (event->keyval == GDK_Control_L
963            || event->keyval == GDK_Control_R)            || event->keyval == GDK_Control_R)
964          result |= AWT_CTRL_DOWN_MASK;          result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK;
965        else        else
966          {          {
967            if (state & GDK_CONTROL_MASK)            if (state & GDK_CONTROL_MASK)
968              result |= AWT_CTRL_DOWN_MASK;              result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK;
969          }          }
970    
971        if (event->keyval == GDK_Alt_L        if (event->keyval == GDK_Alt_L
972            || event->keyval == GDK_Alt_R)            || event->keyval == GDK_Alt_R)
973          result |= AWT_ALT_DOWN_MASK;          result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK;
974        else        else
975          {          {
976            if (state & GDK_MOD1_MASK)            if (state & GDK_MOD1_MASK)
977              result |= AWT_ALT_DOWN_MASK;              result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK;
978          }          }
979      }      }
980    else if (event->type == GDK_KEY_RELEASE)    else if (event->type == GDK_KEY_RELEASE)
# Line 985  keyevent_state_to_awt_mods (GdkEventKey Line 985  keyevent_state_to_awt_mods (GdkEventKey
985            && event->keyval != GDK_Shift_R)            && event->keyval != GDK_Shift_R)
986          {          {
987            if (state & GDK_SHIFT_MASK)            if (state & GDK_SHIFT_MASK)
988              result |= AWT_SHIFT_DOWN_MASK;              result |= AWT_SHIFT_DOWN_MASK | AWT_SHIFT_MASK;
989          }          }
990        if (event->keyval != GDK_Control_L        if (event->keyval != GDK_Control_L
991            && event->keyval != GDK_Control_R)            && event->keyval != GDK_Control_R)
992          {          {
993            if (state & GDK_CONTROL_MASK)            if (state & GDK_CONTROL_MASK)
994              result |= AWT_CTRL_DOWN_MASK;              result |= AWT_CTRL_DOWN_MASK | AWT_CTRL_MASK;
995          }          }
996    
997        if (event->keyval != GDK_Alt_L        if (event->keyval != GDK_Alt_L
998            && event->keyval != GDK_Alt_R)            && event->keyval != GDK_Alt_R)
999          {          {
1000            if (state & GDK_MOD1_MASK)            if (state & GDK_MOD1_MASK)
1001              result |= AWT_ALT_DOWN_MASK;              result |= AWT_ALT_DOWN_MASK | AWT_ALT_MASK;
1002          }          }
1003      }      }
1004    
# Line 1028  static gboolean window_delete_cb (GtkWid Line 1028  static gboolean window_delete_cb (GtkWid
1028  static void window_destroy_cb (GtkWidget *widget, GdkEvent *event,  static void window_destroy_cb (GtkWidget *widget, GdkEvent *event,
1029                                 jobject peer);                                 jobject peer);
1030  static void window_show_cb (GtkWidget *widget, jobject peer);  static void window_show_cb (GtkWidget *widget, jobject peer);
 static void window_active_state_change_cb (GtkWidget *widget,  
                                            GParamSpec *pspec,  
                                            jobject peer);  
1031  static void window_focus_state_change_cb (GtkWidget *widget,  static void window_focus_state_change_cb (GtkWidget *widget,
1032                                            GParamSpec *pspec,                                            GParamSpec *pspec,
1033                                            jobject peer);                                            jobject peer);
# Line 1043  static gboolean window_focus_out_cb (Gtk Line 1040  static gboolean window_focus_out_cb (Gtk
1040  static gboolean window_window_state_cb (GtkWidget *widget,  static gboolean window_window_state_cb (GtkWidget *widget,
1041                                          GdkEvent *event,                                          GdkEvent *event,
1042                                          jobject peer);                                          jobject peer);
 static jint window_get_new_state (GtkWidget *widget);  
1043  static gboolean window_property_changed_cb (GtkWidget *widget,  static gboolean window_property_changed_cb (GtkWidget *widget,
1044                                              GdkEventProperty *event,                                              GdkEventProperty *event,
1045                                              jobject peer);                                              jobject peer);
# Line 1278  Java_gnu_java_awt_peer_gtk_GtkWindowPeer Line 1274  Java_gnu_java_awt_peer_gtk_GtkWindowPeer
1274    g_signal_connect (G_OBJECT (ptr), "show",    g_signal_connect (G_OBJECT (ptr), "show",
1275                      G_CALLBACK (window_show_cb), *gref);                      G_CALLBACK (window_show_cb), *gref);
1276    
   g_signal_connect (G_OBJECT (ptr), "notify::is-active",  
                     G_CALLBACK (window_active_state_change_cb), *gref);  
   
1277    g_signal_connect (G_OBJECT (ptr), "notify::has-toplevel-focus",    g_signal_connect (G_OBJECT (ptr), "notify::has-toplevel-focus",
1278                      G_CALLBACK (window_focus_state_change_cb), *gref);                      G_CALLBACK (window_focus_state_change_cb), *gref);
1279    
# Line 1592  window_show_cb (GtkWidget *widget __attr Line 1585  window_show_cb (GtkWidget *widget __attr
1585  }  }
1586    
1587  static void  static void
 window_active_state_change_cb (GtkWidget *widget __attribute__((unused)),  
                                GParamSpec *pspec __attribute__((unused)),  
                                jobject peer __attribute__((unused)))  
 {  
   /* FIXME: not sure if this is needed or not. */  
   /* Remove the unused attributes if you fix the below.  */  
 #if 0  
   gdk_threads_leave ();  
   
   if (GTK_WINDOW (widget)->is_active)  
     (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer,  
                                 postWindowEventID,  
                                 (jint) AWT_WINDOW_GAINED_FOCUS,  
                                 (jobject) NULL, (jint) 0);  
   else  
     (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer,  
                                 postWindowEventID,  
                                 (jint) AWT_WINDOW_DEACTIVATED,  
                                 (jobject) NULL, (jint) 0);  
   
   gdk_threads_enter ();  
 #endif  
 }  
   
 static void  
1588  window_focus_state_change_cb (GtkWidget *widget,  window_focus_state_change_cb (GtkWidget *widget,
1589                                GParamSpec *pspec __attribute__((unused)),                                GParamSpec *pspec __attribute__((unused)),
1590                                jobject peer)                                jobject peer)
# Line 1660  window_focus_out_cb (GtkWidget * widget Line 1628  window_focus_out_cb (GtkWidget * widget
1628  }  }
1629    
1630  static gboolean  static gboolean
1631  window_window_state_cb (GtkWidget *widget,  window_window_state_cb (GtkWidget *widget __attribute__((unused)),
1632                          GdkEvent *event,                          GdkEvent *event,
1633                          jobject peer)                          jobject peer)
1634  {  {
# Line 1695  window_window_state_cb (GtkWidget *widge Line 1663  window_window_state_cb (GtkWidget *widge
1663    if (event->window_state.new_window_state & GDK_WINDOW_STATE_ICONIFIED)    if (event->window_state.new_window_state & GDK_WINDOW_STATE_ICONIFIED)
1664      new_state |= AWT_FRAME_STATE_ICONIFIED;      new_state |= AWT_FRAME_STATE_ICONIFIED;
1665    
   new_state |= window_get_new_state (widget);  
   
1666    (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer,    (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer,
1667                                postWindowEventID,                                postWindowEventID,
1668                                (jint) AWT_WINDOW_STATE_CHANGED,                                (jint) AWT_WINDOW_STATE_CHANGED,
# Line 1705  window_window_state_cb (GtkWidget *widge Line 1671  window_window_state_cb (GtkWidget *widge
1671    return TRUE;    return TRUE;
1672  }  }
1673    
 static jint  
 window_get_new_state (GtkWidget *widget)  
 {  
   GdkDisplay *display = gtk_widget_get_display(widget);  
   jint new_state = AWT_FRAME_STATE_NORMAL;  
   Atom type;  
   gint format;  
   gulong atom_count;  
   gulong bytes_after;  
   Atom *atom_list = NULL;  
   union atom_list_union alu;  
   gulong i;  
   
   alu.atom_list = &atom_list;  
   XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display),  
                       GDK_WINDOW_XID (widget->window),  
                       gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE"),  
                       0, G_MAXLONG, False, XA_ATOM, &type, &format, &atom_count,  
                       &bytes_after, alu.gu_extents);  
   
   if (type != None)  
     {  
       Atom maxvert = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_MAXIMIZED_VERT");  
       Atom maxhorz      = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_MAXIMIZED_HORZ");  
   
       i = 0;  
       while (i < atom_count)  
         {  
           if (atom_list[i] == maxhorz)  
             new_state |= AWT_FRAME_STATE_MAXIMIZED_HORIZ;  
           else if (atom_list[i] == maxvert)  
             new_state |= AWT_FRAME_STATE_MAXIMIZED_VERT;  
   
           ++i;  
         }  
   
       XFree (atom_list);  
     }  
   return new_state;  
 }  
   
1674  static gboolean  static gboolean
1675  window_property_changed_cb (GtkWidget *widget __attribute__((unused)),  window_property_changed_cb (GtkWidget *widget __attribute__((unused)),
1676                              GdkEventProperty *event,                              GdkEventProperty *event,

Legend:
Removed from v.1.31.2.10  
changed lines
  Added in v.1.31.2.11

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