This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[gui] [PATCH] Reverting a patch from 2004-06-22
- From: David Jee <djee at redhat dot com>
- To: java-patches at gcc dot gnu dot org
- Date: Fri, 25 Jun 2004 12:31:06 -0400
- Subject: [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;
-}