This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gui] [PATCH] Reverting a patch from 2004-06-22


Hi,

I committed the following patch to the java-gui-branch.  It reverts a
patch that was committed on 2004-06-22, which broke AWT/Swing
functionality.  The patch will be reverted until the problems are
resolved.

-David Jee

2004-06-25  David Jee  <djee@redhat.com>

        * gnu/java/awt/peer/gtk/GtkComponentPeer.java,
        jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
        (GtkComponentPeer): Revert previous patch from 2004-06-22.
        (setVisible): Likewise.
        (show): Likewise.
        (hide): Likewise.
        (getArgs): Likewise.
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
        (property_notify_predicate): Likewise.
        (find_layout): Likewise.
        (connectJObject): Likewise.
        (connectSignals): Likewise.
        (moveLayout): Likewise.
        (gtkLayoutSetVisible): Likewise.


Index: gnu/java/awt/peer/gtk/GtkComponentPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java,v
retrieving revision 1.16.2.12
diff -u -r1.16.2.12 GtkComponentPeer.java
--- gnu/java/awt/peer/gtk/GtkComponentPeer.java	23 Jun 2004 03:46:14 -0000	1.16.2.12
+++ gnu/java/awt/peer/gtk/GtkComponentPeer.java	25 Jun 2004 16:17:01 -0000
@@ -115,25 +115,27 @@
     this.awtComponent = awtComponent;
     insets = new Insets (0, 0, 0, 0);
 
-    create ();
+    /* temporary try/catch block until all peers use this creation method */
+    try {
+      create ();
       
-    GtkArgList args = new GtkArgList ();
-    getArgs (awtComponent, args);
-    args.setArgs (this);
-
-    connectJObject ();
-    connectSignals ();
-
-    if (awtComponent.getForeground () != null)
-      setForeground (awtComponent.getForeground ());
-    if (awtComponent.getBackground () != null)
-      setBackground (awtComponent.getBackground ());
-    if (awtComponent.getFont() != null)
-      setFont(awtComponent.getFont());
-
-    setCursor (awtComponent.getCursor ());
-    if (this instanceof GtkFileDialogPeer && awtComponent.getHeight() == 0
-        && awtComponent.getWidth() == 0)
+      GtkArgList args = new GtkArgList ();
+      getArgs (awtComponent, args);
+      args.setArgs (this);
+
+      connectJObject ();
+      connectSignals ();
+
+      if (awtComponent.getForeground () != null)
+	setForeground (awtComponent.getForeground ());
+      if (awtComponent.getBackground () != null)
+	setBackground (awtComponent.getBackground ());
+      if (awtComponent.getFont() != null)
+	setFont(awtComponent.getFont());
+
+      setCursor (awtComponent.getCursor ());
+      if (this instanceof GtkFileDialogPeer && awtComponent.getHeight() == 0
+          && awtComponent.getWidth() == 0)
       {
         int[] dims = new int[2];
         gtkWidgetGetDimensions(dims);
@@ -143,8 +145,9 @@
                                                      dims[0], dims[1]);
       }
 
-    Rectangle bounds = awtComponent.getBounds ();
-    setBounds (bounds.x, bounds.y, bounds.width, bounds.height);
+      Rectangle bounds = awtComponent.getBounds ();
+      setBounds (bounds.x, bounds.y, bounds.width, bounds.height);
+    } catch (RuntimeException ex) { ; }
   }
 
   public int checkImage (Image image, int width, int height, 
@@ -154,7 +157,7 @@
     return i.checkImage ();
   }
 
-  public Image createImage (ImageProducer producer)
+  public Image createImage (ImageProducer producer) 
   {
     return new GtkImage (producer, null);
   }
@@ -446,14 +449,18 @@
 
   public void setVisible (boolean b)
   {
-    if (b)
-      show ();
-    else
-      hide ();
+    set ("visible", b);
+  }
+  
+  public void hide () 
+  {
+    setVisible (false);
   }
 
-  public native void hide ();
-  public native void show ();
+  public void show () 
+  {
+    setVisible (true);
+  }
 
   protected void postMouseEvent(int id, long when, int mods, int x, int y, 
 				int clickCount, boolean popupTrigger) 
@@ -507,6 +514,7 @@
 
   public void getArgs (Component component, GtkArgList args)
   {
+    args.add ("visible", component.isVisible ());
     args.add ("sensitive", component.isEnabled ());
 
     ComponentPeer p;
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,v
retrieving revision 1.15.2.16
diff -u -r1.15.2.16 gnu_java_awt_peer_gtk_GtkComponentPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c	24 Jun 2004 05:31:39 -0000	1.15.2.16
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c	25 Jun 2004 16:17:03 -0000
@@ -868,30 +868,13 @@
   (*env)->ReleaseStringUTFChars (env, name, font_name);
 }
 
-JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkComponentPeer_show
-  (JNIEnv *env, jobject obj)
-{
-  void *ptr;
-
-  ptr = NSA_GET_PTR (env, obj);
-
-  gdk_threads_enter();
-  gtk_widget_show (GTK_WIDGET (ptr));
-  gdk_threads_leave();
-}
-
-JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkComponentPeer_hide
-  (JNIEnv *env, jobject obj)
+void
+set_visible (GtkWidget *widget, jboolean visible)
 {
-  void *ptr;
-
-  ptr = NSA_GET_PTR (env, obj);
-
-  gdk_threads_enter();
-  gtk_widget_hide (GTK_WIDGET (ptr));
-  gdk_threads_leave();
+  if (visible)
+    gtk_widget_show (widget);
+  else
+    gtk_widget_hide (widget);
 }
 
 GtkLayout *
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,v
retrieving revision 1.24.2.7
diff -u -r1.24.2.7 gnu_java_awt_peer_gtk_GtkWindowPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c	24 Jun 2004 05:31:42 -0000	1.24.2.7
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c	25 Jun 2004 16:17:03 -0000
@@ -54,11 +54,9 @@
 
 static void request_frame_extents (GtkWidget *window);
 
-static Bool property_notify_predicate (Display *display,
-                                       XEvent  *xevent,
-                                       XPointer arg);
-
-static GtkLayout *find_layout (GtkWindow *window);
+static int property_notify_predicate (Display *xdisplay,
+                                      XEvent  *event,
+                                      XPointer window_id);
 
 static void window_delete_cb (GtkWidget *widget, GdkEvent *event,
 			      jobject peer);
@@ -76,6 +74,10 @@
 					    GdkEventProperty *event,
 					    jobject peer);
 
+/*
+ * Make a new window.
+ */
+
 JNIEXPORT void JNICALL 
 Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create 
   (JNIEnv *env, jobject obj, jint type, jboolean decorated,
@@ -178,17 +180,29 @@
   (JNIEnv *env, jobject obj)
 {
   void *ptr;
-  GtkLayout *layout;
+  GtkWidget* vbox, *layout;
+  GList* children;
 
   ptr = NSA_GET_PTR (env, obj);
 
   gdk_threads_enter ();
 
-  layout = find_layout (GTK_WINDOW (ptr));
+  children = gtk_container_get_children(GTK_CONTAINER(ptr));
+  vbox = children->data;
+  g_assert (GTK_IS_VBOX(vbox));
+
+  children = gtk_container_get_children(GTK_CONTAINER(vbox));
+  do
+  {
+    layout = children->data;
+    children = children->next;
+  }
+  while (!GTK_IS_LAYOUT (layout) && children != NULL);
+  g_assert (GTK_IS_LAYOUT(layout));
 
-  gtk_widget_realize (GTK_WIDGET (layout));
+  gtk_widget_realize (layout);
 
-  connect_awt_hook (env, obj, 1, layout->bin_window);
+  connect_awt_hook (env, obj, 1, GTK_LAYOUT (layout)->bin_window);
 
   gtk_widget_realize (ptr);
 
@@ -201,23 +215,32 @@
 Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectSignals
   (JNIEnv *env, jobject obj)
 {
-  void *ptr;
-  jobject *gref;
-  GtkLayout *layout;
-
-  ptr = NSA_GET_PTR (env, obj);
-
-  gref = NSA_GET_GLOBAL_REF (env, obj);
+  void *ptr = NSA_GET_PTR (env, obj);
+  jobject *gref = NSA_GET_GLOBAL_REF (env, obj);
+  GtkWidget* vbox, *layout;
+  GList* children;
+  g_assert (gref);
 
   gdk_threads_enter ();
 
   gtk_widget_realize (ptr);
 
   /* Receive events from the GtkLayout too */
-  layout = find_layout (GTK_WINDOW (ptr));
+  children = gtk_container_get_children(GTK_CONTAINER(ptr));
+  vbox = children->data;  
+  g_assert (GTK_IS_VBOX (vbox));
 
-  g_signal_connect (G_OBJECT (layout), "event",
-                    G_CALLBACK (pre_event_handler), *gref);
+  children = gtk_container_get_children(GTK_CONTAINER(vbox));
+  do
+  {
+    layout = children->data;
+    children = children->next;
+  }
+  while (!GTK_IS_LAYOUT (layout) && children != NULL);
+  g_assert (GTK_IS_LAYOUT (layout));
+
+  g_signal_connect (GTK_OBJECT (layout), "event", 
+		    G_CALLBACK (pre_event_handler), *gref);
 
   /* Connect signals for window event support. */
   g_signal_connect (G_OBJECT (ptr), "delete-event",
@@ -425,6 +448,7 @@
 {
   void* ptr;
   GList* children;
+  GtkBox* vbox;
   GtkLayout* layout;
   GtkWidget* widget;
 
@@ -432,8 +456,18 @@
 
   gdk_threads_enter ();
 
-  layout = find_layout (GTK_WINDOW (ptr));
+  children = gtk_container_get_children (GTK_CONTAINER (ptr));
+  vbox = children->data;
+  g_assert (GTK_IS_VBOX (vbox));
 
+  children = gtk_container_get_children (GTK_CONTAINER (vbox));
+  do
+  {
+    layout = children->data;
+    children = children->next;
+  }
+  while (!GTK_IS_LAYOUT (layout) && children != NULL);
+  g_assert (GTK_IS_LAYOUT (layout));  
   children = gtk_container_get_children (GTK_CONTAINER (layout));
   
   while (children != NULL)
@@ -449,25 +483,36 @@
   
 JNIEXPORT void JNICALL
 Java_gnu_java_awt_peer_gtk_GtkFramePeer_gtkLayoutSetVisible
-  (JNIEnv *env, jobject obj, jboolean visible)
+  (JNIEnv *env, jobject obj, jboolean vis)
 {
-  void *ptr;
-  GtkLayout *layout;
+  void* ptr;
+  GList* children;
+  GtkBox* vbox;
+  GtkLayout* layout;
 
   ptr = NSA_GET_PTR (env, obj);
 
   gdk_threads_enter ();
 
-  layout = find_layout (GTK_WINDOW (ptr));
+  children = gtk_container_get_children (GTK_CONTAINER (ptr));
+  vbox = children->data;
+  g_assert (GTK_IS_VBOX (vbox));
 
-  if (visible)
+  children = gtk_container_get_children (GTK_CONTAINER (vbox));
+  do
+  {
+    layout = children->data;
+    children = children->next;
+  }
+  while (!GTK_IS_LAYOUT (layout) && children != NULL);
+  g_assert (GTK_IS_LAYOUT (layout));  
+  
+  if (vis)
     gtk_widget_show (GTK_WIDGET (layout));
   else
     gtk_widget_hide (GTK_WIDGET (layout));
-
   gdk_threads_leave ();
 }
-
 static void
 window_get_frame_extents (GtkWidget *window,
                           int *top, int *left, int *bottom, int *right)
@@ -559,7 +604,7 @@
     }
 }
 
-static Bool
+static int
 property_notify_predicate (Display *xdisplay __attribute__((unused)),
                            XEvent  *event,
                            XPointer window_id)
@@ -569,9 +614,9 @@
   if (event->xany.type == PropertyNotify
       && event->xany.window == *window
       && event->xproperty.atom == extents_atom)
-    return True;
-  else
-    return False;
+        return True;
+
+  return False;
 }
 
 static void
@@ -763,26 +808,3 @@
 
   return FALSE;
 }
-
-static GtkLayout *
-find_layout (GtkWindow *window)
-{
-  GList* children;
-  GtkBox* vbox;
-  GtkLayout* layout;
-
-  children = gtk_container_get_children (GTK_CONTAINER (window));
-  vbox = children->data;
-  g_assert (GTK_IS_VBOX (vbox));
-
-  children = gtk_container_get_children (GTK_CONTAINER (vbox));
-  do
-  {
-    layout = children->data;
-    children = children->next;
-  }
-  while (!GTK_IS_LAYOUT (layout) && children != NULL);
-  g_assert (GTK_IS_LAYOUT (layout));
-
-  return layout;
-}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]