Index: ChangeLog =================================================================== RCS file: /cvs/gcc/gcc/libjava/ChangeLog,v retrieving revision 1.2559 diff -u -r1.2559 ChangeLog --- ChangeLog 15 Jan 2004 21:59:59 -0000 1.2559 +++ ChangeLog 16 Jan 2004 13:57:50 -0000 @@ -1,3 +1,14 @@ +2004-01-16 Kim Ho + + * gnu/java/awt/peer/gtk/GtkComponentPeer.java (GtkComponentPeer): If + it is a FileDialog and has dimensions of 0 by 0, then the initial + size is set to size request plus insets. + * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java + (gtkWidgetGetDimensions): Override method. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c + (gtkWidgetGetDimensions): Override method. Returns size request plus + insets. + 2004-01-15 Olga Rodimina * gnu/java/awt/peer/gtk/GdkGraphics2D.java: 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.13 diff -u -r1.13 GtkComponentPeer.java --- gnu/java/awt/peer/gtk/GtkComponentPeer.java 13 Jan 2004 20:54:46 -0000 1.13 +++ gnu/java/awt/peer/gtk/GtkComponentPeer.java 16 Jan 2004 13:57:50 -0000 @@ -1,5 +1,5 @@ /* GtkComponentPeer.java -- Implements ComponentPeer with GTK - Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -124,6 +124,16 @@ setFont(awtComponent.getFont()); setCursor (awtComponent.getCursor ()); + if (this instanceof GtkFileDialogPeer && awtComponent.getHeight() == 0 + && awtComponent.getWidth() == 0) + { + int[] dims = new int[2]; + gtkWidgetGetDimensions(dims); + ((GtkFileDialogPeer) this).setBoundsCallback((Window)awtComponent, + awtComponent.getX(), + awtComponent.getY(), + dims[0], dims[1]); + } Rectangle bounds = awtComponent.getBounds (); setBounds (bounds.x, bounds.y, bounds.width, bounds.height); Index: gnu/java/awt/peer/gtk/GtkFileDialogPeer.java =================================================================== RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,v retrieving revision 1.4 diff -u -r1.4 GtkFileDialogPeer.java --- gnu/java/awt/peer/gtk/GtkFileDialogPeer.java 8 Jan 2004 21:12:25 -0000 1.4 +++ gnu/java/awt/peer/gtk/GtkFileDialogPeer.java 16 Jan 2004 13:57:50 -0000 @@ -1,5 +1,5 @@ /* GtkFileDialogPeer.java -- Implements FileDialogPeer with GTK - Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -63,6 +63,7 @@ native void connectJObject (); native void connectSignals (); native void nativeSetFile (String file); + native void gtkWidgetGetDimensions (int[] dims); public void setFile (String fileName) { 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.12 diff -u -r1.12 gnu_java_awt_peer_gtk_GtkWindowPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 13 Jan 2004 20:54:46 -0000 1.12 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 16 Jan 2004 13:57:51 -0000 @@ -1,5 +1,5 @@ /* gtkwindowpeer.c -- Native implementation of GtkWindowPeer - Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -399,6 +399,33 @@ return height; } + +JNIEXPORT void JNICALL +Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_gtkWidgetGetDimensions + (JNIEnv *env, jobject obj, jintArray jdims) +{ + void *ptr; + jint *dims; + int top, left, bottom, right; + GtkRequisition req; + + ptr = NSA_GET_PTR (env, obj); + dims = (*env)->GetIntArrayElements (env, jdims, 0); + dims[0] = dims[1] = 0; + + gdk_threads_enter (); + + gtk_widget_size_request (GTK_WIDGET (ptr), &req); + + window_get_frame_extents (GTK_WIDGET (ptr), &top, &left, &bottom, &right); + + dims[0] = req.width + left + right; + dims[1] = req.height + top + bottom; + + gdk_threads_leave (); + + (*env)->ReleaseIntArrayElements (env, jdims, dims, 0); +} static void window_get_frame_extents (GtkWidget *window,