/[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.58 by fitzsim, Tue Sep 6 03:08:54 2005 UTC revision 1.59 by fitzsim, Fri Sep 9 15:21:45 2005 UTC
# 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.58  
changed lines
  Added in v.1.59

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