This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Patch: Make AWT Frame respect its initial size setting
- From: Thomas Fitzsimmons <fitzsim at redhat dot com>
- To: GCJ Patches <java-patches at gcc dot gnu dot org>
- Date: Tue, 26 Aug 2003 22:56:07 -0400
- Subject: Patch: Make AWT Frame respect its initial size setting
Hello,
AWT Frames backed by the GTK peers were not respecting their initial
size settings. This patch fixes the problem. It also makes Frames
invisible upon construction to match the behaviour described in Sun's
documentation.
Please review and comment.
Thanks,
Tom
2003-08-26 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkDialogPeer.java (create): Add width
and height arguments to GtkWindowPeer.create method call.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java
(create(int,int,int)): New method.
(create(int)): Add call to new create method.
(create()): Add width and height arguments to create method
call.
(GtkWindowPeer): Remove call to setBounds.
* java/awt/Frame.java (Frame(String)): Initialize visible field
to false.
(Frame(GraphicsConfiguration)): Likewise.
(Frame(String,GraphicsConfiguration)): Likewise.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c (create):
Add width and height parameters. Call
gtk_window_set_default_size.
(connectHooks): Remove unused name variable.
(static setBounds): Call gtk_window_resize not
gtk_widget_set_usize.
(setBounds): Remove unused nchildren variable.
Index: gnu/java/awt/peer/gtk/GtkDialogPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java,v
retrieving revision 1.3
diff -u -b -B -r1.3 GtkDialogPeer.java
--- gnu/java/awt/peer/gtk/GtkDialogPeer.java 13 Jul 2003 15:09:20 -0000 1.3
+++ gnu/java/awt/peer/gtk/GtkDialogPeer.java 27 Aug 2003 02:39:19 -0000
@@ -53,7 +53,9 @@
void create ()
{
- create (GTK_WINDOW_POPUP);
+ create (GTK_WINDOW_POPUP,
+ awtComponent.getWidth(),
+ awtComponent.getHeight());
}
public void getArgs (Component component, GtkArgList args)
Index: gnu/java/awt/peer/gtk/GtkWindowPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java,v
retrieving revision 1.3
diff -u -b -B -r1.3 GtkWindowPeer.java
--- gnu/java/awt/peer/gtk/GtkWindowPeer.java 22 Aug 2003 14:34:36 -0000 1.3
+++ gnu/java/awt/peer/gtk/GtkWindowPeer.java 27 Aug 2003 02:39:19 -0000
@@ -49,11 +49,18 @@
static protected final int GTK_WINDOW_TOPLEVEL = 0;
static protected final int GTK_WINDOW_POPUP = 1;
- native void create (int type);
+ native void create (int type, int width, int height);
+
+ void create (int type)
+ {
+ create (type, awtComponent.getWidth(), awtComponent.getHeight());
+ }
void create ()
{
- create (GTK_WINDOW_POPUP);
+ create (GTK_WINDOW_POPUP,
+ awtComponent.getWidth(),
+ awtComponent.getHeight());
}
native void connectHooks ();
@@ -61,9 +68,6 @@
public GtkWindowPeer (Window window)
{
super (window);
-
- Dimension d = window.getSize ();
- setBounds (0, 0, d.width, d.height);
}
public void getArgs (Component component, GtkArgList args)
Index: java/awt/Frame.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Frame.java,v
retrieving revision 1.16
diff -u -b -B -r1.16 Frame.java
--- java/awt/Frame.java 11 Jun 2003 10:37:47 -0000 1.16
+++ java/awt/Frame.java 27 Aug 2003 02:39:20 -0000
@@ -237,12 +237,15 @@
{
super();
this.title = title;
+ /* Top-level frames are initially invisible. */
+ visible = false;
}
public
Frame(GraphicsConfiguration gc)
{
super(gc);
+ visible = false;
}
public
@@ -250,6 +253,7 @@
{
super(gc);
setTitle(title);
+ visible = false;
}
/*************************************************************************/
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c,v
retrieving revision 1.5
diff -u -b -B -r1.5 gnu_java_awt_peer_gtk_GtkEvents.c
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.3
diff -u -b -B -r1.3 gnu_java_awt_peer_gtk_GtkWindowPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 22 Aug 2003 14:34:37 -0000 1.3
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 27 Aug 2003 02:39:25 -0000
@@ -50,14 +50,16 @@
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create
- (JNIEnv *env, jobject obj, jint type)
+ (JNIEnv *env, jobject obj, jint type, jint width, jint height)
{
- gpointer window;
+ GtkWidget *window;
GtkWidget *vbox, *layout;
gdk_threads_enter ();
window = gtk_window_new (type);
+ gtk_window_set_default_size (GTK_WINDOW(window), width, height);
+
vbox = gtk_vbox_new (0, 0);
layout = gtk_layout_new (NULL, NULL);
gtk_box_pack_end (GTK_BOX (vbox), layout, 1, 1, 0);
@@ -93,24 +96,23 @@
(JNIEnv *env, jobject obj)
{
void *ptr;
- GtkVBox* vbox;
- GtkWidget *layout;
+ GtkWidget* vbox, *layout;
GList* children;
- char* name;
+
ptr = NSA_GET_PTR (env, obj);
gdk_threads_enter ();
children = gtk_container_get_children(GTK_CONTAINER(ptr));
vbox = children->data;
- name = GTK_OBJECT_TYPE_NAME(vbox);
+
if(!GTK_IS_VBOX(vbox))
{
printf("*** this is not a vbox\n");
}
children = gtk_container_get_children(GTK_CONTAINER(vbox));
layout = children->data;
- name = GTK_OBJECT_TYPE_NAME(layout);
+
if(!GTK_IS_LAYOUT(layout))
{
printf("*** widget is not a layout ***");
@@ -147,7 +149,6 @@
gtk_widget_show (vbox);
gtk_widget_realize (window);
-/* setBounds (window, x, y, width, height); */
connect_awt_hook (env, obj, 1, window->window);
set_visible (window, visible);
@@ -233,15 +234,7 @@
static void
setBounds (GtkWidget *widget, jint x, jint y, jint width, jint height)
{
-/* gdk_window_get_root_origin (widget->window, ¤t_x, ¤t_y); */
-
-/* if (current_x != x || current_y != y) */
-/* { */
-/* gdk_window_set_hints (widget->window, x, y, 0, 0, 0, 0, GDK_HINT_POS); */
-/* gdk_window_move (widget->window, x, y); */
-/* } */
-
- gtk_widget_set_usize (widget, width, height);
+ gtk_window_resize (GTK_WINDOW(widget), width, height);
}
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setBounds
@@ -314,7 +307,6 @@
gint *depth)
{
GdkWindow *private;
- unsigned int nchildren;
g_return_if_fail (window != NULL);